首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC启动带TextBoxFor EditorFor

MVC启动带TextBoxFor EditorFor
EN

Stack Overflow用户
提问于 2015-01-15 11:48:23
回答 4查看 17.9K关注 0票数 2

我有一个MVC视图,它使用Bootstrap样式。我想使用"@Html.EditorFor“而不是"@HtmlTextBoxFor”。为什么EditorFor不确定它需要成为一个文本框,然后得到相同的结果和TextBoxFor呢?

我提出这个问题的原因是,我的下一个字段将是一个日期,并希望使用EditorFor,而在DataType数据注释中,它将显示一个日期选择器。

下面是截图和查看代码,名字是EditorFor,而姓是(首选格式) TextBoxFor。

代码语言:javascript
复制
    <div class="form-group">
        @Html.LabelFor(m => m.Title, new { @class = "control-label" })
        @Html.DropDownListFor(m => m.Title, new SelectList((IEnumerable)@ViewData["Titles"]), new { @class = "form-control" })
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.Forenames, new { @class = "control-label" })
        @Html.ValidationMessageFor(m => m.Forenames)
        @Html.EditorFor(m => m.Forenames, new { @class = "form-control" })
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.Surname, new { @class = "control-label" })
        @Html.ValidationMessageFor(m => m.Surname)
        @Html.TextBoxFor(m => m.Surname, new { @class = "form-control" })
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.DateOfBirth, new { @class = "control-label" })
        @Html.ValidationMessageFor(m => m.DateOfBirth)
        @Html.EditorFor(m => m.DateOfBirth, new { @class = "form-control" })
    </div>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-15 12:21:35

我张贴这个答案,因为它完全适合我-所有感谢@StephenMuecke。虽然标记为MVC4 (我将移除标记),但我实际上使用了MVC5,因此可以传递html属性:

代码语言:javascript
复制
<div class="form-group">
    @Html.LabelFor(m => m.Forenames, new { @class = "control-label" })
    @Html.ValidationMessageFor(m => m.Forenames)
    @Html.EditorFor(m => m.Forenames, new { @class = "form-control" })
</div>

变成:

代码语言:javascript
复制
<div class="form-group">
    @Html.LabelFor(m => m.Forenames, new { @class = "control-label" })
    @Html.ValidationMessageFor(m => m.Forenames)
    @Html.EditorFor(m => m.Forenames, new { htmlAttributes = new { @class = "form-control" } })
</div>
票数 4
EN

Stack Overflow用户

发布于 2015-01-15 12:16:47

TextBoxFor接受属性参数,因为它总是创建<input>标记,因此它可以向它们添加属性。

但是,EditorFor可以呈现任何东西,从单个<input>标记到成熟的编辑器(通过声明自定义编辑器或将复杂类型传递给编辑器)。因此,在这种情况下接受属性参数是没有意义的。如果您查看MSDN中的此方法的重载列表,您将看到,如果传递一个对象,该对象将被视为“附加ViewData",但从未被视为”属性“。如果您查看TextBoxFor文档,您将看到有几个重载可以接受一个属性参数。

然而,MVC (5.1+)的最新版本确实接受EditorFor助手中的属性。请看这个那么,在MVC5.1中,Html.EditorFor比类支持更多吗?

票数 2
EN

Stack Overflow用户

发布于 2015-04-16 19:56:26

代码语言:javascript
复制
Html.EditorFor(Function(m) m.Forenames, New With { 
     Key .htmlAttributes = New With { Key .[class] = "form-control" } 
})

FYI -根据Telerik代码转换器,这是VB.NET剃须刀版本的答案看起来(恶心)。但是,也许对外面的人有用。

(测试及工程)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27962760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档