我一直在使用asp.net mvc(但我仍然是一個開始)。我想有能力更新兩個視圖作爲jquery回發的結果。ASP.NET MVC 2 JQuery POST不顯示模型狀態錯誤
基本上我有一個列表和詳細信息視圖。詳細信息視圖是使用jquery彈出窗口(使用jQuery UI彈出窗口)呈現的。如果細節保存成功(即細節視圖中沒有驗證錯誤),我只想更新列表。但是,如果細節視圖中有任何驗證錯誤,我想更新詳細信息視圖,以便用戶看到驗證錯誤。
所以我想在我的控制器中,我返回一個JsonResult而不是一個View。你可以看到如果沒有錯誤,我返回人員列表視圖,但是如果有任何驗證錯誤,我已經返回細節視圖。我返回JsonResult的原因是我需要告訴我的視圖有一個錯誤,以便視圖(jquery)知道要更新哪個部分(如更新人員列表'div'或彈出對話框'div 「)。因此,在我看來,jquery如下(請假定有一個表格用於輸入個人詳細信息和「SubmitPersonForm();」功能在點擊「保存」按鈕時調用):
<script type="text/javascript>
$('#btnSave').click(function (event) {
onBegin();
$.ajax(
{
type: "POST",
url: "/Person/Save",
data: $('form').serialize(),
success: function (result) {
if(result.Error) {
$('#dvDetails').html($(result).View));
}
else {
$('#dvPersonList').html($result);
}
}
});
});
</script>
所以現在的問題是,當出現驗證錯誤時,我確實看到正確的'div'被更新,但是我失去了asp.net mvc驗證消息。我沒有看到紅色的任何驗證錯誤,就好像ASP.NET MVC完全忽略它們一樣。但是,我的ModelState確實有這些錯誤,只是沒有顯示在細節視圖中。我確實具有驗證摘要和Html.ValidationFor(m => ...)語句放在我的詳細信息視圖中。
有人能告訴我爲什麼我沒有看到驗證錯誤嗎?儘管我使用的是JSonResult,但我在使用'dvDetails'時使用了正確的屬性,這是一個有效的視圖。我在做asp.net mvc中沒有的東西嗎?順便說一句我用Visual Studio 2010 RC使用asp.net mvc2 RC。
謝謝。
謝謝您的回覆。對不起,這是我的問題中的拼寫錯誤。我已絕對確信網址是正確的。事實上,我已經調試過,它會打電話給我的控制器。事實上,當驗證失敗時,ModelState將包含驗證錯誤(由於我的數據註釋)。真的不知道爲什麼我沒有看到在視圖中的錯誤:(。 – Oshan 2010-04-01 07:39:14
好吧,只是想確保... 也許它的一個限制,當它作爲一個部分視圖被拒絕 你看過這個:http://stackoverflow.com/questions/1556533/asp-net-mvc-modelstate-and-partial-view似乎是相同的probmen。 – Syska 2010-04-01 15:48:01