2012-02-09 109 views
5

我有以下代碼:@ Html.ValidationSummary是否適用於MVC3或MVC4中的客戶端驗證?

@Html.ValidationSummary(false) 
@Html.ValidationSummary(true, "xxx") 

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 

當我輸入的999訂單值,則我立即獲得客戶端驗證,顯示了我的錯誤信息只是訂單文本框後。然而在Html.ValidationSummary區域沒有任何顯示。是否有可能將這與客戶端驗證一起使用?

這裏是我的模型:

public class Menu 
{ 
    [Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")] 
    [DisplayName("Order")] 
    public int Order { get; set; } 

我的web配置:

<appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

回答

4

我不是100%肯定,但驗證摘要我可以在MVC 3默認應用程序找到距離形成。也許是因爲您的驗證摘要不在表單之外,因此無法更新。 當您在表單中移動驗證摘要時會發生什麼?

來源:

@Html.ValidationSummary(false) 
@Html.ValidationSummary(true, "xxx") 

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 

要:

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    @Html.ValidationSummary(false) 
    @Html.ValidationSummary(true, "xxx") 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 
+1

我想這和它一樣的。仍然不起作用。我所做的是將Html.ValidationMessageFor移動到表單內部的頂部。這可以工作,但我真的不想在頁面頂部有很多Html.ValidationMessageFor一個接一個。 – 2012-02-09 14:00:19

+0

Quote:'我所做的就是將Html.ValidationMessageFor移動到窗體內部的頂部。'這就是我要求您嘗試在代碼中看到的「To:」後面的驗證摘要在形成。所以我不知道你是什麼意思,我試過這個,它也是一樣的。仍然無法正常工作.' – Nope 2012-02-09 14:05:21

+1

關於'但我並不是真的想在頁面頂部有很多Html.ValidationMessageFor一個接一個的設計選擇,至少現在已經解決了爲什麼您的驗證問題總結沒有出現。如何呈現和設計它們是我猜想的另一個故事。 – Nope 2012-02-09 14:08:58