我试图弄清楚是否有办法确保使用数据注释和实体框架允许仅数字输入.
我使用以下代码
[Required] [DisplayName("Client No")] [Column("client_no",TypeName = "smallint")] public virtual Int16 Number { get; set; }
我希望使用数字类来显示它.
在一个地方我使用以下
<input type="number" name="searchClientNo" class="numericOnly" /><br />
但在我正在使用的报名表中
@Html.EditorFor(m => m.Number,EditorTemplate.TextBox)
我有一个自定义的EditorFor与以下代码
<div class="editor-label"> @Html.Label((ViewData.ModelMetadata.DisplayName??ViewData.ModelMetadata.PropertyName),new Dictionary<string,object> { { "for",ViewData.ModelMetadata.PropertyName } }) </div> <div class="editor-field"> @Html.TextBox("",(object)Model,object> { { "id",ViewData.ModelMetadata.PropertyName },{ "name",{ "class","text-box single-line"},{ "data-bind","value: " + ViewData.ModelMetadata.PropertyName },}) @Html.ValidationMessage(ViewData.ModelMetadata.PropertyName,object> { { "data-valmsg-for",ViewData.ModelMetadata.PropertyName } }) </div>
我想知道如何保持这些代码没有更改,但仍然使用仅数字文本框.我需要使用UIHint吗?
或者,是否可以让我现有的EditorFor更聪明?
我发现此博客发布http://robseder.wordpress.com/2012/06/01/uihint-displaytemplates-and-editortemplates-in-mvc/但我已经使用自定义EditorFor了.可能是我需要添加一个新类型,例如,EditorTemplate.NumericTextBox并添加另一个编辑器?听起来它可能有用,我明天会试试这个……
非常感谢提前.
解决方法
您可以编写自定义编辑器模板/ Views / Shared / EditorTemplates / NumberTemplate.cshtml:
@Html.TextBox("",ViewData.TemplateInfo.FormattedModelValue,new { type = "number" })
然后使用UIHint属性装饰您的视图模型属性:
[Required] [DisplayName("Client No")] [Column("client_no",TypeName = "smallint")] [UIHint("NumberTemplate")] public virtual Int16 Number { get; set; }
在你的视图中:
@Html.EditorFor(x => x.Number)
或者如果您不想在视图模型上使用UIHint属性,可以定义EditorTemplate.NumericTextBox =“NumberTemplate”,然后:
@Html.EditorFor(m => m.Number,EditorTemplate.NumericTextBox)