在 MVC Razor View 中将类属性设置为 Html.EditorFor ASP.NET

本文关键字:设置 Html EditorFor NET ASP 属性 Razor MVC View | 更新日期: 2023-09-27 18:18:10

如您所知,我们可以在剃须刀视图中将属性设置为actionLink或textBox,但是我们如何将属性设置为@Html.EditorFor,我知道EditorFor是一个动态元素,可以根据模型类型进行设置,但是所有形状都可以获取属性。那么有没有办法将属性设置为@Html.EditorFor这样的东西:new {@class = "myclass"}

在 MVC Razor View 中将类属性设置为 Html.EditorFor ASP.NET

试试这个:

@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })

EditorFor帮助程序呈现相应的编辑器模板。它可以是您编写的默认模板或某些自定义模板。此模板可以包含任何标记。它可以包含许多 DOM 元素。所以现在你明白了,要求将类应用于模板没有任何意义。您希望将此类应用于此模板上的哪个元素?例如,使用 TextBoxFor 帮助程序,您知道它将生成单个输入字段,因此讨论对其应用 CSS 类是有意义的(这正是 htmlAttributes 参数允许您执行的操作(。

话虽如此,有不同的技术。例如,我非常喜欢编写自定义数据注释模型元数据提供程序和自定义编辑器模板,如以下博客文章中所述。

另一种可能性是自定义默认模板(如Brad Wilson的博客文章所示(,并将不同的HTML属性应用于相应的输入字段。让我们以 string.cshtml 编辑器模板为例:

@model string
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, ViewData)

现在,当您想为视图模型上的某些字符串属性呈现此编辑器模板时:

@Html.EditorFor(x => x.SomeStringProperty, new { @class = "myclass" })

将自定义属性添加为

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @data_minlength = "3", @class = "form-control input-md", @placeholder = "Name", @required = "required", @id= "txtName"} })

将数据替换为@data_

它将生成带有数据的正确html-

我相信原始海报是正确的

  • 每个EditorFor()

    创建一个主HTML element(尽管可能存在其他(,因此能够传递包含HTML attributes的对象以应用于该主HTML element将非常有帮助。

  • 我想将HTML 5">自动对焦">属性应用于每个表单上的一个字段

  • 但我不想编写自定义代码。

  • 讨厌这样一个事实,即我目前只能使用例如@Html.TextBoxFor()来使用该字段,以便我可以将特定属性应用于input element

  • EditorFor()方法确实有一个他们调用additionalViewData的参数,但我不知道你可以用它做什么,在 MSDN 上搜索对我没有任何帮助。

试试这个简单的代码来添加类到@Html.EditorFor()

@Html.EditorFor(x => x.Demo)
<style type="text/css">
#Demo
{
   color:#fff;
   width: 50%;
}
</style>

此代码适用于 MVC3