2014-06-27 27 views
0

問題陳述:級聯下拉驗證是MVC剃刀失敗

我創建了一個級聯下拉國家和國家使用jQuery和JSON的,一切工作fine.I'm能夠綁定數據,國家和國家的變化事件的數據。唯一的問題是我面臨的是國家和國家的級聯驗證。

關於打開查看iff我點擊創建按鈕,而沒有選擇/輸入控件的任何值,它顯示所有的驗證消息。如果我選​​擇國家並單擊創建,它不顯示驗證消息的狀態,即使沒有值被選爲國家。

我做錯了什麼?我認爲我在視圖的腳本部分做錯了什麼!

請參閱附件圖片瞭解更多詳情:

圖1:當我點擊創建按鈕,它顯示了所有控件的驗證。

Image 1

圖2:選擇國家下拉如果我點擊創建按鈕之後,狀態驗證沒有出現,爲什麼?

Image 2

查看代碼:

<div class="form-horizontal"> 
     <hr /> 
     @Html.ValidationSummary(true) 

     <div class="form-group"> 
      @Html.LabelFor(model => model.cityModel.CountryID, new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownListFor(model => model.cityModel.CountryID, new SelectList(Model.ddlCountryStateCity.ddlCountry, "Value", "Text"), "Select Country", new { id="CountryID",onchange="GetddlState()",@class = "form-control"}) 
       @Html.ValidationMessageFor(model => model.cityModel.CountryID) 
      </div> 
     </div> 
     <div class="form-group"> 
      @Html.LabelFor(model => model.cityModel.StateID, new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownListFor(model => model.cityModel.StateID, new SelectList(Model.ddlCountryStateCity.ddlState, "Value", "Text"), "Select State", new { id="StateID",@class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.cityModel.StateID) 
      </div> 
     </div> 

     <div class="form-group"> 
       @Html.LabelFor(model => model.cityModel.CityID, new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.TextBoxFor(model => model.cityModel.CityID, new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.cityModel.CityID) 
      </div> 
     </div> 

     <div class="form-group"> 
       @Html.LabelFor(model => model.cityModel.Name, new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.TextBoxFor(model => model.cityModel.Name, new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.cityModel.Name) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 

腳本代碼:

@section Scripts { 
@Scripts.Render("~/bundles/jqueryval") 
<script type="text/javascript"> 
    function GetddlState() { 
     $("#StateID").empty(); 
     $("#StateID").append("<option value='0'>Select State</option>"); 
     var countryID = $('#CountryID').val(); 
     var Url = "@Url.Content("~/MasterConfigGeneral/GetddlState")"; 
     $.ajax({ 
      url: Url, 
      dataType: 'json', 
      data: { CountryID: countryID }, 
      success: function (data) { 
       $("#StateID").empty(); 
       $("#StateID").append("<option value='0'>Select State</option>"); 
       $.each(data, function (index, optiondata) { 
        $("#StateID").append("<option value='" + optiondata.Value + "'>" + optiondata.Text + "</option>"); 
       }); 
      } 
     }); 
    } 

</script> 
} 

回答

2

試試這個:

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
     <script type="text/javascript"> 
     function GetddlState() { 
     var countryID = $('#CountryID').val(); 
     var Url = "@Url.Content("~/MasterConfigGeneral/GetddlState")"; 
     $.ajax({ 
      url: Url, 
      dataType: 'json', 
      data: { CountryID: countryID }, 
      success: function (data) { 
      $("#StateID").empty(); 
      $("#StateID").append("<option value='' selected='selected'>Select State</option>"); 
      $.each(data, function (index, optiondata) { 
      $("#StateID").append("<option value='" + optiondata.Value + "'>" + optiondata.Text + "</option>"); 
      }); 
     } 
    }); 
} 

</script> 
} 
+0

讓我知道它是否適合你.. –

+0

這是工作以外one.Initially驗證所有的方案同時適用於國家和狀態控制。在國家選擇值後,如果沒有在狀態中選擇值,狀態驗證正在爲狀態工作(使用選項值=')。在選擇狀態值後,如果我再次選擇國家選擇國家我點擊創建按鈕驗證狀態不工作...爲什麼? –

+0

@VishalIPatil plz看到更新的答案。 –

0
   type: "POST", 
      data: JSON.stringify({"id": idd}), 
      contentType: "application/json; charset=utf-8", 

$.ajax下增加這三個參數就能解決問題