2015-02-06 25 views
7

Bir MVC 5 uygulamasına sahibim ve doğrulama işlemlerinin çoğunu yapmak için veri ek açıklamaları kullanıyorum. Sınıfımdaki özelliklerinden biri şuna benzer:MVC5 - Veri Ek Açıklamaları - İstemci Tarafı Doğrulaması Yaşanmıyor mu?

[Required(ErrorMessage = "Please enter a business name")] 
[StringLength(80)] 
public string BusinessName { get; set; } 

doğrulama çalışıyor ama olması gerektiği düşünülen gibi tarayıcıda gerçekleşiyor gibi görünmüyor. Sayfamda Kaydet düğmesi var.

[HttpPost] 
    public ActionResult Create(Advertiser advertiser, FormCollection collection, HttpPostedFileBase file) 
    { 
     // Before we do anything, let's check to make sure any validation that's already been done is clean. 
     if (!ModelState.IsValid) 
     { 
      return View(advertiser); 
     } 
    ... 
    ... 
} 

bu yöntem yürütüldüğünde, örnek bir devlet zaten geçersiz ayarlanır: Ben boş İşletme Adı alanını terk ve Kaydet'i tıklayın, aşağıdaki gibi bir post, kısmen görünen bir kontrolör yöntemine yapılır. Bu iyi çünkü İşletme Adı alanı boş olduğundan geçersiz. Ancak, bu doğrulama müşteride gerçekleşmemeli mi? (Bootstrap kullanarak) aşağıdaki gibi

benim .cshtml dosyasındaki alanının görünüyor şu şekildedir:

<div class="form-group"> 
    @Html.Label("Business Name", new { @class = "control-label col-md-3" }) 
    <div class="col-md-9"> 
     @Html.TextBoxFor(model => model.BusinessName, new { @class = "form-control", title = "", autofocus = true }) 
     @Html.ValidationMessageFor(model => model.BusinessName) 
    </div> 
</div> 

Benim Web.Config doğru ayarlanmış:

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

Cshtml işaretlemeniz nedir? (görünümünüz ... kod nedir) –

+0

@Ahmedilyas - İşaretlemeyi eklemek için gönderiyi değiştirdim. –

+0

[MVC3 İstemci tarafı doğrulaması çalışmıyor] olası kopyası (http://stackoverflow.com/questions/4706174/mvc3-client-side-validation-not-working) –

cevap

10

benim sorunu buldum. ne fark etmedi jqueryval paket varsayılan olarak _Layout.cshtml dosyasında yüklü olsun ETMEZ yani

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
       "~/Scripts/jquery-{version}.min.js", 
       "~/Scripts/jquery-ui-1.10.4.min.js", 
       "~/Scripts/jquery.base64.js" 
       )); 

    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
       "~/Scripts/jquery.validate.min.js", 
       "~/Scripts/jquery.validate.unobtrusive.min.js" 
       )); 

Ama: my BundleConfig.cs ben şu var. Bu yüzden aşağıdaki gibi eklemeliydik:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryval") 
@Scripts.Render("~/bundles/bootstrap") 
@RenderSection("scripts", required: false) 

Bunu bir kez yaptım, olması gerektiği gibi çalışıyor. Tabii ki, bu tüm sayfalar için yüklenmesine neden olur. Bu arzu edilmeyebilir. Aksi takdirde, her sayfada ayrı ayrı yükleyin.