【问题标题】:Change class of @Html.EditorFor / customize template | ASP .NET MVC 4更改@Html.EditorFor 的类/自定义模板 | ASP .NET MVC 4
【发布时间】:2018-12-24 20:18:47
【问题描述】:

我想更改 @Html.EditorFor 字段的类/样式。我读了一些关于自定义模板的内容,但是我的项目中没有模板文件夹(Views/Shared/ONLY_FILES_HERE)。遗憾的是,我使用 MVC 5.1。

我也想使用 TextBoxFor,因为 inputvalidation。

我怎样才能做到这一点?

这是我的模型的 sn-p:

public class CreateTableColumnModels
{
    [RegularExpression(@"^[A-Za-z0-9]+$", ErrorMessage = "Use letters and numbers only please")]
    [Display(Name = "Name")]
    public string Name { get; set; }

我试过了:

@model QlikViewStammdaten.Models.CreateTableColumnModels
<div>
    @Html.EditorFor(x => Model.Name, new { @class = "form-control" })
</div>

【问题讨论】:

  • 试过了:@Html.EditorFor(x=> x.MyProperty, new { htmlAttributes = new { @class= "MyCssClass" } })
  • 只需在 Views/Shared 文件夹中创建 Editor/DisplayTemplates 文件夹并添加 .cshtml
  • @PrashantPimpale 是的,它适用于 >=MVC 5.1
  • 使用TextBoxFor有什么问题? (无论如何,他们最终都会调用相同的代码)。验证没有问题。

标签: c# css asp.net-mvc editorfor


【解决方案1】:

正如在 cmets 中已经提到的,最好将一个类添加到 Html.TextBoxFor 而不是 @Html.EditorFor。为什么?因为@Html.EditorFor 呈现一个模板,而该模板可能包含多个控件(现在您要向其中哪个控件添加类?)...参见Adding a class to EditorFor

如果要数字类型,则添加@type = "number"

@Html.TextBoxFor(m => m.Name, new { @class = "form-control", @type = "number"  }) 

注意:不是x =&gt; Model.Name,而是m =&gt; m.Name

我相信您已经知道这一点,但 [Display(Name = "Name")] 在您的模型中是多余的,因为默认显示名称是变量名称本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多