2012-03-21 42 views
1

客戶端驗證和ValidationSummary對我的項目(MVC4 + Razor + Unobtrusive JS)工作正常,但服務器端錯誤未顯示在我的視圖中,如果有任何客戶端錯誤,它不會從視圖中刪除(它從ModelState中刪除)。我曾嘗試過Chrome14和IE9驗證服務器端錯誤摘要不起作用

服務器端錯誤正在作爲ModelState.AddModelError(string.Empty, ModelState.AllErrors());添加到模型中,並顯示爲視圖爲@Html.ValidationSummary(false)

編輯

簡單的形式提交工作正常,它顯示了從服務器和更新返回的錯誤消息的多個錯誤消息,但是,基於AJAX表單提交不工作的基於Ajax的形式返回的錯誤信息提交的根本沒有顯示。

這裏是被如何製造的請求

@*... View contents related to Master Model ...*@ 
    @using (Ajax.BeginForm("ActionToAddRecord", new AjaxOptions())) 
    { 
     @Html.Action("ActionToAddRecord") 
     <input type="submit" value="Add Record"/> 
    } 
    @*... View contents related to Master Model ...*@ 

ActionToAddRecord是表示由主模型包含在模型中的局部視圖

錯誤被返回作爲

[HttpGet] 
public ActionResult ActionToAddRecord() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult ActionToAddRecord(childModel model) 
{ 
    ModelState.AddModelError(string.Empty, "First error message"); 
    ModelState.AddModelError(string.Empty, "Second error message"); 
    return View(model); 
} 
樣品示範

編輯

我通過VS2010(基於對話框的登錄形式)在模板化的MVC應用程序中看到了類似的功能。錯誤消息以Json形式返回,然後JS用於顯示它們,IMO似乎像MS使基於Ajax的請求非常簡單且簡潔(Ajax.BeginForm),但錯過了錯誤處理部分。現在我不願意爲此使用JS,可能有更好的方法來自動處理這種類型的錯誤處理。

回答

0

解決了,有一個小錯誤。

母版視圖

@*Master View Contents*@ 
     @using (Ajax.BeginForm("AddPaymentCurrency", new AjaxOptions { UpdateTargetId = "paymentCurrency" })) 
     { 
      <div id="paymentCurrency"> 
       @{Html.RenderPartial("PaymentCurrency", Model.PaymentCurrencyNew);} 
      </div> 
     } 

PaymentCurrency查看

@*Model Editors*@ 
@Html.ValidationSummary(false) 
<input type="submit" value="Add Payment Currency"/> 

<div id="paymentCurrencyList" style="width:inherit; height:auto; overflow:auto;"> 
    @Html.Action("PaymentCurrencyList") 
</div> 

控制器

[HttpPost] 
public ActionResult AddPaymentCurrency(PaymentCurrency model) 
{ 
    if (!ModelState.IsValid) 
    { 
     ModelState.AddModelError(string.Empty, ModelState.AllErrors()); 
     return View("PaymentCurrency", model); 
    } 
    //Add login 
    return View("PaymentCurrency", model); 
} 

public ActionResult PaymentCurrencyList() 
{ 
    //var list = getList 
    return View(list); 
} 

小錯誤

ValidationSummary顯示的字段突出顯示,並在添加無效付款貨幣時顯示星號。一旦添加了有效貨幣,ValidationSummary和星號不再以無效付款貨幣顯示,只是字段突出顯示。

請幫我把它固定,我寧願不改變目前的結構,否則我會開始得到大錯誤