gpt4 book ai didi

c# - ASP.NET MVC @Html.LabelFor(model => model.Name) 助手

转载 作者:行者123 更新时间:2023-11-30 18:25:53 24 4
gpt4 key购买 nike

我正在尝试创建一个帮助器,使我的表单在整个网站中得到控制

这是我目前使用的

@helper editorField(System.Linq.Expressions.Expression<Func<Model, String>> o)
{
<div class="form-group">
@Html.LabelFor(o, new { @class = "col-md-4 control-label" })
@Html.ValidationMessageFor(o, "", new { @class = "col-md-6 col-xs-12 text-errer" })
<div class="col-md-5">
@Html.TextBoxFor(o, new { @class = "form-control" })
</div>
</div>
}

我的使用方式是

        @editorField(model => model.Name)
@editorField(model => model.Email)
@editorField(model => model.PhoneNumber)

这使得在一处更改整个网站的样式和布局变得非常容易

问题来了

我需要为每个模型和数据类型制作助手

我正在寻找一种方法让它像这样工作

@helper editorField(object o)
{
<div class="form-group">
@Html.LabelFor(o, new { @class = "col-md-4 control-label" })
@Html.ValidationMessageFor(o, "", new { @class = "col-md-6 col-xs-12 text-errer" })
<div class="col-md-5">
@Html.TextBoxFor(o, new { @class = "form-control" })
</div>
</div>
}

它应该适用于所有模型和数据类型

最佳答案

所以基本上您要实现的是一个通用的 HTML 帮助程序。不幸的是,Razor View 不直接支持这些。但是,您可以使用此解决方法:

@functions
{
public HelperResult PasteEditorFor<TModel, TItem>(HtmlHelper<TModel> html, Expression<Func<TModel, TItem>> expr)
{
return editorField(
html.LabelFor(expr, new { @class = "col-md-4 control-label" }),
html.ValidationMessageFor(expr, "", new { @class = "col-md-6 col-xs-12 text-errer" }),
html.TextBoxFor(expr, new { @class = "form-control" }));
}
}

@helper editorField(MvcHtmlString label, MvcHtmlString validationMessage, MvcHtmlString textBox)
{
<div class="form-group">
@label
@validationMessage
<div class="col-md-5">
@textBox
</div>
</div>
}

// usage sample
@PasteEditorFor(Html, m => m.LongDescription)

但由于它仍然不容易重用(目前还不知道如何让它在所有 View 中可见),所以我建议您使用通常的静态类语法编写通常的 HtmlHelper(请参阅 Alundra the dreamwalker 评论) 并将其命名空间添加到 WebConfig 中的默认命名空间列表。

关于c# - ASP.NET MVC @Html.LabelFor(model => model.Name) 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29419224/

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