关于类似主题有几个问题。但是,它们实际上并没有解决我的问题。
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; }
所以我明白了:
当我使用
时@Html.EditorFor(modelItem => item.Quantity, new { style = "width: 30px;" })
我明白了:
我想要的是滚动,但要格式化宽度。
我想知道,有没有办法用EditorFor
格式化data annotations
的宽度?如果没有,制作这种格式的最简单方法是什么,以避免重复.. bootstrap
,css
?我对内联样式不满意。
答案 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渲染所有元素。