fre*_*tje 20 .net c# asp.net-mvc jquery-validate asp.net-mvc-4
DateTime我的模型中有一个属性,但我只对时间部分感兴趣:
public class MyModel
{
[Required, DataType.Time]
public DateTime Time
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我这样输出:
@Html.EditorFor(model => model.Time)
Run Code Online (Sandbox Code Playgroud)
这用于在MVC 3中生成以下html:
<input class="text-box single-line" data-val="true"
data-val-required="The Time field is required."
id="Time" name="Time" type="time" value="" />
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用MVC 4,这是生成的html:
<input class="text-box single-line" data-val="true"
data-val-date="The field Time must be a date."
data-val-required="The Time field is required."
id="Time" name="Time" type="time" value="" />
Run Code Online (Sandbox Code Playgroud)
data-val-date添加了额外的属性,导致客户端验证错误,因为时间(例如"10:30")未形成为日期.
我想这是MVC 4中的一个错误(我报告过)?但是在它解决之前,有没有办法阻止生成这个属性?或者甚至更好,有没有办法让它作为一个data-val-time替代生成,所以我可以为时间字段提供我自己的客户端验证方法?
我可以说更好的选择是编写自己的客户端验证函数。否则你可以做一些欺骗,我不会说这是正确的方法,但它可以解决你的问题。我在 MVC 验证方面遇到了类似的问题,我想更改客户端验证的行为。请查看链接
这里的想法是您手动将“data-val-required”和“data-val”等属性添加到输入字段,然后为其添加验证消息。
希望它能以某种方式帮助你。
编辑:
尝试这个
从模型中删除所需的字段属性
public class MyModel
{
public DateTime Time
}
Run Code Online (Sandbox Code Playgroud)
然后向您的控件添加属性,如下所示
@Html.TextBoxFor(model => model.Time, new Dictionary<string, object> { { "data-val-required", "required" }, { "data-val", "true" }})
@Html.ValidationMessage("Time", "The Time field is required.")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10174 次 |
| 最近记录: |