我可以使用数据注释更改EditorFor的宽度吗?

时间:2015-08-13 02:21:32

标签: asp.net-mvc data-annotations editorformodel

关于类似主题有几个问题。但是,它们实际上并没有解决我的问题。

DisplayFormat for TextBoxFor in MVC

Display a formatted date in an EditorFor()

ASP.NET MVC EditorFor DateTime

我一直在搜索和阅读,但找不到答案。

我正在使用它来格式化我的输入框:

@Html.TextBoxFor(modelItem => item.Quantity, new { style = "width: 30px;" })

从我的模型中,我有简短的数据注释:

[Required, Range(1, 100)]
public int Quantity { get; set; }

所以我明白了:

enter image description here

当我使用

@Html.EditorFor(modelItem => item.Quantity, new { style = "width: 30px;" })

我明白了:

enter image description here

我想要的是滚动,但要格式化宽度。

我想知道,有没有办法用EditorFor格式化data annotations的宽度?如果没有,制作这种格式的最简单方法是什么,以避免重复.. bootstrapcss?我对内联样式不满意。

1 个答案:

答案 0 :(得分:2)

从评论中,您使用的是MVC-4。您不能将html属性传递给EditorFor()方法,除非您使用MVC-5.1或更高版本(请参阅release notes - Bootstrap对编辑器模板的支持部分)

一种选择是使用TextBoxFor()方法并传递type="number"以呈现浏览器数字控件

@Html.TextBoxFor(m => m.Quantity, new { type = "number ", style = "width: 30px;" })

另一种方法是创建自定义EditorTemplate(比如_NumericControl.cshtml

@model System.Int32
@Html.TextBoxFor(m => m, new { type = "number ", style = "width: 30px;" })

并使用@Html.EditorFor(m => m.Quantity, "_NumericControl")

进行调用

但如果模板还要包含其他html元素,例如@Html.LabelFor(m => m)@Html.ValidationMessageFor(m => m),甚至可能包含相关按钮,那么这实际上只会带来任何实际好处,因此{{1} } method渲染所有元素。