Ser*_*rov 20 razor asp.net-core-mvc
MVC6引入了Tag Helpers,与使用@ Html.EditorFor等相比,这是更好的方法.但是我还没有发现任何Tag Helper可以替代@ Html.DisplayFor.
当然,我可以直接在Razor页面上使用变量,例如@ Model.BookingCode.但这不允许控制格式.
使用MVC6,显示模型属性值的概念正确方法是什么?
Joe*_*tte 13
@ Html.DisplayFor仍然存在,仍然可以使用.
HtmlHelpers和TagHelpers之间的区别在于HtmlHelpers选择为您呈现哪些html元素,而TagHelpers使用您自己添加的html标记,以便您可以更全面地控制使用的html元素.您可以使用HtmlHelpers模板对标记进行一些控制,但您可以使用TagHelper进行更多控制.
所以你应该考虑我想要包装这个模型属性的html标记,并使用@ Model.Property在其周围添加一些标记,或者如果你更愿意让帮助者决定,继续使用DisplayFor.
您可以创建自己的标记助手
namespace MyDemo.TagHelpers
{
[HtmlTargetElement("p", Attributes = ForAttributeName)]
public class DisplayForTagHelper : TagHelper
{
private const string ForAttributeName = "asp-for";
[HtmlAttributeName(ForAttributeName)]
public ModelExpression For { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (output == null)
{
throw new ArgumentNullException(nameof(output));
}
var text = For.ModelExplorer.GetSimpleDisplayText();
output.Content.SetContent(text);
}
}
}
Run Code Online (Sandbox Code Playgroud)
添加在视图中使用它:
<p asp-for="MyProperty" class="form-control-static"></p>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8226 次 |
| 最近记录: |