我在.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

09-20 16:35