2012-02-09 24 views
5

Aşağıdaki kod var: @ Html.ValidationSummary MVC3 veya MVC4 istemci tarafında doğrulama için çalışıyor mu?

@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> 

Sonra ben hemen hemen al Metin kutusuna sonra bana bir hata iletisi gösteriyor istemci tarafı doğrulama olsun 999 Sipariş değeri girin

. Ancak Html.ValidationSummary alanında hiçbir şey gösterilmez. Bunu istemci tarafında doğrulama ile kullanmak mümkün mü? İşte

benim modelidir:

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

My Web yapılandırma:

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

cevap

4

değilim% 100 kesin ama MVC 3 Varsayılan uygulamada bulabilirsiniz doğrulama özeti içindedir Form. Belki de doğrulama özetleriniz formun dışında kalıyor çünkü güncellenmiyor. Formdaki Doğrulama özetini taşıdığınızda ne olur?

Gönderen:

@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> 

için:

@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

Bu çalıştı ve sadece aynı. hala çalışmıyor. Yaptığım şey, Html.ValidationMessageFor'u formun hemen üst kısmına taşımaktı. Bu çalışır, ancak gerçekten sayfanın en üstünde diğer birçok Html.ValidationMessageFor sahip olmak istemiyorum. –

+0

Alıntı: 'Yaptığım şey, Html.ValidationMessageFor'u formun tam ortasına taşımaktı. 'Bu, sizden doğrulama özetlerinin içinde olduğu' To: 'takiben kodda görüldüğü gibi denemenizi istediğim buydu. form. Yani ne demek istediğimi bilmiyorum, bunu denedim ve bu sadece aynı. hala işe yaramıyor. ' – Nope

+1

' Ama ben gerçekten pek çok Html.ValidationMessage sahip olmak istemiyorum, hepsi sayfanın en üstünde diğerlerinden sonra 'bir tasarım seçimdir, en azından şimdi neden doğrulama sorununu çözdünüz? özet görünmedi. Onları nasıl sunup stil edeceğim sanırım başka bir hikaye. – Nope

İlgili konular