1
從我所看到的ModelState.IsValid只能通過MVC框架的完整回發計算,這是真的嗎?C#ASPNET MVC - 你如何在jQuery/ajax回發中使用ModelState.IsValid?
我有一個jQuery的回傳,像這樣:
var url = "/path/to/controller/myaction";
var id = $("#Id").val();
var somedata = $("#somedata").val(); // repeated for every textbox
$.post(url, { id: id, somedata: somedata },
function (data) {
// etc
});
而控制器動作的樣子:
public JsonResult MyAction(MyModel modelInstance)
{
if (ModelState.IsValid)
{
// ... ModelState.IsValid is always true, even when there is invalid data
}
}
但是,這似乎並沒有引發ModelState.IsValid。例如,如果有些數據長度爲5個字符,但DataAnnotation表示[StringLength(3)] - 在這種情況下,ModelStae.IsValid仍然爲真,因爲它尚未觸發。
有沒有什麼特別的事情,我需要做一個jQuery/ajax後,而不是一個完整的職位?
謝謝!
我比你的樣品,看看有什麼可能是錯誤的,但都沒有發現問題。我的代碼在表單動作和$ .post url上確實有不同的url - 但是讓它們一樣沒有區別。 – 2010-05-03 01:03:21
一個可能的差異:我不回發所有模型字段。某些字段可以爲空,並且不會在此方法中更新,因此它們不會被回發。你認爲這會有所作爲嗎? – 2010-05-03 01:04:52
我注意到的另一件事:在我的控制器操作中,模型對象正確填充了發佈的數據。但是ModelState是空的(.count = 0)。 – 2010-05-03 01:05:42