【发布时间】:2014-06-28 01:17:05
【问题描述】:
EditorFor为什么会为byte和short渲染不同的类和输入类型,如下图:
<div class="form-group">
<input class="text-box single-line" data-val="true"
data-val-number="The field Num Year / Period must be a number."
id="NumYear_Period" name="NumYear_Period" type="number" value="" />
</div>
<div class="form-group">
<input class="form-control" data-val="true"
data-val-number="The field Start Year must be a number."
id="Start_Year_Period" name="Start_Year_Period" type="text" value="" />
</div>
其中“NumYear_Period”是可空字节,“Start_Year_Period”是可空短,如下:
[Display(Name = "Num Year / Period")]
public Nullable<byte> NumYear_Period { get; set; }
[Display(Name = "Start Year")]
public Nullable<short> Start_Year_Period { get; set; }
Create.cshtml 视图包含:
<div class="form-group">
@Html.EditorFor(model => model.NumYear_Period)
</div>
<div class="form-group">
@Html.EditorFor(model => model.Start_Year_Period)
</div>
我没有 EditorTemplates,为什么!!
使用 Bootstrap、Visual Studio 2013 Update 1、MVC 5.1.1、.Net 4.5、Razor 3.1.1
【问题讨论】:
-
+1 我想知道这是否是
HtmlHelper中的错误,并且尚未更新以解决bytes。毕竟,我想我不记得我上次要求用户在浏览器中输入 1 和 0 并在您的视图模型中使用byte时,这正是您要求他们做的事情。我会在您的视图模型中使用Short,因为您要求用户输入一个数字,而不是一系列 1 和 0。 -
嗯,它更多的是范围限制,因为模型通过实体框架由数据库模型管理。也就是说,数据库表已经创建,或者说是固有的,并且模型创建为 Database First。
-
我明白了。我认为大多数人将视图模型用于屏幕上的属性,而域模型是数据库中数据的表示。实体的领域模型往往更大,而视图模型只是您想在屏幕上使用的数据。因此,两者通常是断开的,必须发生一些映射。
标签: c# asp.net-mvc twitter-bootstrap asp.net-mvc-5.1 .net-4.5