如果通过javascript将destinationId设置为0,则ModelState.IsValid返回true

时间:2018-08-19 01:06:54

标签: asp.net-mvc

public class InventoryEventViewModel{
      public int DestinationId { get; set; }
      public int EventType { get; set; }
}

[HttpPost]
 [ValidateAntiForgeryToken]
 public ActionResult Save(InventoryEventViewModel viewModel)
 {
           //added a breakpoint here

            if (!ModelState.IsValid)
            {
             //do something
             }
}

在剃刀视图中

<select name="DestinationId" id="DestinationId">
<option>Select Destination</option>
<option value="1">A</option>
<option value="2">B</option>
</select>

$('#DestinationId').val(@Model.DestinationId)->返回0

DestinationId的类型为int,因此其默认值为0,当我提交表单时,我在ActionResult行的下方添加了一个断点以查看viewModel内容,然后发现viewModel.DestinationId为0,因此ModelState.IsValid返回{ {1}}。但是,如果我删除此行true,那么$('#DestinationId').val(@Model.DestinationId)的默认值为空白,但是在我的断点viewModel.DestinationId仍然为0,但是$('#DestinationId')返回ModelState.IsValid时,我我开始认为false实际上不是指ModelState的状态。那两者之间是什么关系?

0 个答案:

没有答案