2017-08-30 63 views
-3

HTML我如何使用jQuery

<div class="portlet-body"> @using (Html.BeginForm()) { @Html.AntiForgeryToken() 
    <div class="form-horizontal"> 
    <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    <div class="form-group"> @Html.LabelFor(model => model.Details, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> @Html.EditorFor(model => model.Details, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Details, "", new { @class = "text-danger" }) </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
     <input type="button" onclick="MainSave()" value="Create" class="btn btn-primary" /> </div> 
    </div> 
    </div> } </div> 

Java腳本的JQuery

var MainSave = function() { 
    var Geturl = $("#hidUrlofsave").val(); 
    var Details = $("#Details").val(); 
    var Id = $("#hidid").val(); 
    if (Details != "") { 
    $.ajax({ 
     url: Geturl, 
     type: "Post", 
     data: { 
     Details: Details, 
     Id: Id 
     }, 
     success: function(res) { 
     if (res == "true") { 
      Loaditem(); 
      AutoLoader("Save", "success"); 
      $("#Details").val(""); 
     } else if (res == "update") { 
      Loaditem(); 
      AutoLoader("Update", "success"); 
      $("#hidid").val(""); 
     } else { 
      AutoLoader("error", "error"); 
     } 
     } 
    }) 
    } else { 
    $("#Details").css("border", "solid 1px red") 
    } 
} 

升C的mvc操作代碼

[HttpPost] 
public string ErpMainItem(tbl_inv_Main main) { 
     try { 
     if (main.Id == 0) { 
      var ad = new MainRepoistory().Add(main); 
      if (ad) { 
      return "true"; 
      } else { 
      return "false"; 
      } 
     } else { 
      var ad = new MainRepoistory().Update(main); 
      if (ad) { 
      return "update"; 
      } else { 
      return "false"; 
      } 
     } 
     } catch (Exception e) { 
     return "false"; 
     } 
    } 
調用的mvc服務器端驗證在Ajax調用

回答

0

你不能只使用ajax調用寫在服務器端的驗證,這樣做也不是一個好的方法。

同時發佈形式

//Check if posted model data is valid or not 
//checks every validation data annotation 
if(ModelState.IsValid) 
{ 
    //<Model is valid 
} 

對於客戶端相同的效果(驗證),你必須包含3個文件

  1. 的jquery.js
  2. jQuery的你可以驗證你的模型。 validate.js
  3. jquery.validate.unobtrusive.js

您可以使用縮小版本的上述文件,但應保留序列。之後,客戶端驗證在沒有發送數據到服務器的情況下執行。您可以獲得您在服務器端編寫的所有驗證規則。像要求的MaxLength電子郵件等,爲綁定到屬性模特HTML元素。

@Html.TextBoxFor(m=>m.Email, new{@class="form-control"} 

更新

如果數據正在通過Ajax和按鈕張貼不類型的提交然後形式可使用.valid()函數來驗證。

$("#postMyData").on('click', function(e){ 
    var isFormValid = $("#myForm").valid(); 
    if(isFormValid) 
    { 
    //Ajax Call 
    } 
}); 
+0

這是工作的罰款,如果使用提交按鈕,而不是使用Ajax調用但是當我使用Ajax調用他們的D'n做工精細,他們證實,但該錯誤信息不會出現在驗證摘要 –