我在.NET MVC 5中有一个表单,用户可以在其中写一个数字,默认为“0”,如果用户删除了一个数字,例如“233”表示该字段为空。该表格不会提交。
如何提交带有空白字段的表单?
public class myModel
{
public int nummer { get; set; }
public myModel(){}
public myModel(int i) {this.nummer = i;}
}
剃刀代码:
using (Html.BeginForm("myAction", "myController", FormMethod.Post, new { @class = "form-inline" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text- danger" })
@Html.EditorFor(model => model.nummer, new { htmlAttributes = new { @class = "form-control " } })
<input type="submit" value="submit" name="btnSubmit"/>
}
我对验证错误消息不感兴趣,但是默认情况下将其值设置为“0”。
最佳答案
DefaultModelBinder
使用无参数构造函数初始化您的模型(永远不会调用您的第二个构造函数)。您需要使该属性可为空,以防止客户端和服务器端验证错误
public int? nummer { get; set; }
然后在POST方法中,测试是否为null,如果是,则将值设置为
0
if(!model.nummer.HasValue)
{
model.nummer = 0;
}
或者,您可以编写自己的
ModelBinder
来测试null
值,然后在ModelBinder
中将值设置为0