2013-08-30 60 views
0

如何用jquery「重新加載」viewmodel的一部分,而不用POST其餘的形式?如何用jquery重新加載模型的一部分

首先,代碼:

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 
    @ViewBag.Status 

    <div id="haveToReload"> 
    @foreach (var type in OrderTools.getDeliveryTypes(int valueFromDropDownList)) 
    { 
     <div style="width:400px; "> 
      @Html.RadioButtonFor(x => x.SelectedDeliveryTypeID, type.DeliveryTypeID, new { name = "DeliveryType", id = type.DeliveryTypeID }) 
      <label for="@type.DeliveryTypeID">@type.Name | @type.Price | @type.RealisationDays </label> 
     </div> 
    } 
    </div> 
    @Html.LabelFor(m => m.CountryID) 
    @Html.DropDownListFor(m=> m.CountryID, UserTools.getCountries(), new { @class="dropdownlist" }) 
    @Html.ValidationMessageFor(m => m.CountryID) 

    (...) 
} 

我的想法是,如果但─從DropDownListFor用戶的變化值,它將會被自動「重裝」 <div id="haveToReload">..</div>OrderTools.getDeliveryTypes(int valueFromDropDownList)新的價值,併爲specyfic國秀deliveryTypes。

我該怎麼做?

回答

1

你可以按照下面的步驟:

  1. 就下拉的變化Ajax調用,將獲取的數據。
  2. 然後在ajax調用成功之後,您可以用新數據替換您的視圖。

AJAX調用:

$("#dropDownId").change() { 
     $.ajax({ 
      type: "POST", 
      url: "Controller/Action", 
      data: { 'dropDownValue' : "+ $(this).val() +"} , 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (result) { 
       $("#haveToReload").replaceWith(result); // your replacing logic 
    }, 
    error: function() { 
    } 
}); 
} 
相關問題