gpt4 book ai didi

asp.net - @model.Name 和 @Html.DisplayFor(m => model.Name) 的区别

转载 作者:行者123 更新时间:2023-12-01 11:15:04 25 4
gpt4 key购买 nike

我正在开发 Web 应用程序,这是我第一次使用 asp.net mvc core 2.0。我从任何教程中学习,但到处都有不同的模型打印方法,我不明白为什么有很多方法只用于打印。

这两种方法有什么区别:

<td>
@item.Name
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>

哪个更好?

最佳答案

如果您有任何给定数据类型的自定义显示模板,使用 @Html.DisplayFor() 将遵循该自定义显示模板并按照您的意愿呈现您的代码。

直接使用 @Model.YourField 只会简单地调用该字段上的 .ToString() 并输出调用返回的任何内容。

试试这个:

模型/IndexModel.cs:

public class IndexModel
{
public DateTime HireDate { get; set; }
}

Controller/HomeController.cs:

public ActionResult Index()
{
IndexModel model = new IndexModel {HireDate = new DateTime(2015, 8, 15)};
return View(model);
}

Views/Home/Index.cshtml:

<div class="row">
<div class="col-md-6 col-md-offset-2">
Output directly: @Model.HireDate
<br/><br/>
Output via DisplayFor: @Html.DisplayFor(m => m.HireDate)
</div>
</div>

最后是自定义显示模板:

Views/DisplayTemplates/DateTime.cshtml:

@{
<span class="datetime">@Model.ToString("MMM dd, yyyy / HH:mm")</span>
}

您的输出现在将是:

Output directly: 15.08.2015 00:00:00            // Output from Model.HireDate.ToString();

Output via DisplayFor: Aug 15, 2015 . 00:00 // Output as defined in your custom display template

现在哪个更好真的取决于你想做什么:

  • 通常,我更喜欢使用 @Html.DisplayFor(),因为通常情况下,如果我遇到定义自定义显示模板的麻烦,我可能想使用它, 也是

  • 但如果您只需要“原始”输出,无需自定义渲染,您也可以直接使用@model.YourField

所以这真的是您想要/需要什么的问题 - 选择最适合您的需要/要求的!

关于asp.net - @model.Name 和 @Html.DisplayFor(m => model.Name) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53129449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com