你能解释一下为什么@ Html.DisplayFor(X => X)将产生相同的结果@ Html.DisplayForModel()? [英] Could you explain why @Html.DisplayFor(x=>x) yields the same result as @Html.DisplayForModel()?

查看:168
本文介绍了你能解释一下为什么@ Html.DisplayFor(X => X)将产生相同的结果@ Html.DisplayForModel()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问:


  1. 您能解释一下为什么 @ Html.DisplayFor(X => X)产生相同的结果为 @ Html.DisplayForModel()在以下情况下?

  2. ,他们什么时候产生不同的结果?

型号

 使用System.Collections.Generic;命名空间MvcMusicStore.Models
{
    公共类体裁
    {
        公众诠释GenreId {搞定;组; }
        公共字符串名称{;组; }
        公共字符串描述{搞定;组; }
        公开名单<相册和GT;相册{搞定;组; }
    }
}

控制器

 使用System.Linq的;
使用System.Web.Mvc;
使用MvcMusicStore.Models;命名空间MvcMusicStore.Controllers
{
    公共类HomeController的:控制器
    {
        MusicStoreEntities DB =新MusicStoreEntities();
        //
        // 回家/        公众的ActionResult指数()
        {
            变种流派= db.Genres.ToList();
            返回查看(流派);
        }
     }
}

Index.cshtml查看

  @model IEnumerable的< MvcMusicStore.Models.Genre>@ {
    ViewBag.Title =指数;
}< H2>指数< / H>@ Html.DisplayFor(X => X)

  @model IEnumerable的< MvcMusicStore.Models.Genre>@ {
    ViewBag.Title =指数;
}< H2>指数< / H>
@ Html.DisplayForModel()

共享/ DisplayTemplates / Genre.cshtml

  @model MvcMusicStore.Models.Genre<&字段集GT;
    <传奇>类型< /传说>    < D​​IV CLASS =显示标签>名称和LT; / DIV>
    < D​​IV CLASS =显示字段> @ Model.Name< / DIV>    < D​​IV CLASS =显示标签>说明与LT; / DIV>
    < D​​IV CLASS =显示字段> @ Model.Description< / DIV>
< /字段集>


解决方案

的<一个href=\"http://msdn.microsoft.com/en-us/library/system.web.mvc.html.displayextensions.displayformodel.aspx\"相对=nofollow> DisplayForModel() 方法返回HTML标记的模型中的每个属性。

的<一个href=\"http://msdn.microsoft.com/en-us/library/system.web.mvc.html.displayextensions.displayfor%28v=vs.98%29.aspx\"相对=nofollow> DisplayFor() 方法返回HTML标记的对象中的每个属性,正在重新$ p $由LAMBDA前pression您提供psented。

所以,当你说 DisplayFor(X =&GT; X),你的前pression说的使用整个模型,它给你同样的结果 DisplayForModel()

说明DisplayFor()演示的Visual Studio项目可这里

Question:

  1. Could you explain why @Html.DisplayFor(x=>x) yields the same result as @Html.DisplayForModel() in the following scenario?
  2. When do they produce different result?

Model

using System.Collections.Generic;

namespace MvcMusicStore.Models
{
    public class Genre
    {
        public int GenreId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public List<Album> Albums { get; set; }
    }
}

Controller

using System.Linq;
using System.Web.Mvc;
using MvcMusicStore.Models;

namespace MvcMusicStore.Controllers
{
    public class HomeController : Controller
    {
        MusicStoreEntities db = new MusicStoreEntities();
        //
        // GET: /Home/

        public ActionResult Index()
        {
            var genres = db.Genres.ToList();
            return View(genres);
        }
     }
}

Index.cshtml View

@model IEnumerable<MvcMusicStore.Models.Genre>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@Html.DisplayFor(x=>x)

or

@model IEnumerable<MvcMusicStore.Models.Genre>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>


@Html.DisplayForModel()

Shared/DisplayTemplates/Genre.cshtml

@model MvcMusicStore.Models.Genre

<fieldset>
    <legend>Genre</legend>

    <div class="display-label">Name</div>
    <div class="display-field">@Model.Name</div>

    <div class="display-label">Description</div>
    <div class="display-field">@Model.Description</div>
</fieldset>

解决方案

The DisplayForModel() method returns HTML markup for each property in the model.

The DisplayFor() method returns HTML markup for each property in the object that is represented by the Lambda Expression you provide.

So when you say DisplayFor(x => x), your expression says, "use the entire model," which gives you the same result as DisplayForModel().

A demonstration Visual Studio project illustrating DisplayFor() is available here.

这篇关于你能解释一下为什么@ Html.DisplayFor(X =&GT; X)将产生相同的结果@ Html.DisplayForModel()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆