Asp.net-Mvc

使用 jquery Ajax 載入 PartialView?

  • September 4, 2016

部分視圖

@model OsosYeni23072012.Models.TblMeters
<h3>
   Model.customer_name
</h3>
<h3>
   Model.meter_name
</h3>

控制器

[HttpGet]
public ActionResult MeterInfoPartial(string meter_id)
{
   int _meter_id = Int32.Parse(meter_id);
   var _meter = entity.TblMeters.Where(x => x.sno == _meter_id).FirstOrDefault();

   return PartialView("MeterInfoPartial", _meter);
}

剃刀

@Html.DropDownList("sno", new SelectList(Model, "sno", "meter_name"), "-- Select Meter --", new { id = "meters"})

@Html.Partial("MeterInfoPartial")

如果下拉列表更改,我想載入部分視圖。但我不知道我該怎麼做。我找不到任何關於這個的例子。我用actionlink做到這一點。但我之前沒有使用下拉菜單。

控制器參數meter_id等於下拉列表選擇值。

謝謝。

您可以訂閱.change()下拉事件,然後觸發 AJAX 請求:

<script type="text/javascript">
   $(function() {
       $('#meters').change(function() {
           var meterId = $(this).val();
           if (meterId && meterId != '') {
               $.ajax({
                   url: '@Url.Action("MeterInfoPartial")',
                   type: 'GET',
                   cache: false,
                   data: { meter_id: meterId }
               }).done(function(result) {
                       $('#container').html(result);
               });
           }
       });
   });
</script>

然後你會用一個給定 id 的 div 包裝部分:

<div id="container">
   @Html.Partial("MeterInfoPartial")
</div>

另外,您為什麼要在控制器操作中進行解析,將其留給模型綁定器:

[HttpGet]
public ActionResult MeterInfoPartial(int meter_id)
{
   var meter = entity.TblMeters.FirstOrDefault(x => x.sno == meter_id);
   return PartialView(meter);
}

請小心,FirstOrDefault因為如果它在您的數據庫中找不到匹配的記錄,meter_id它會返回null並且當您嘗試訪問模型時您的部分將崩潰。

引用自:https://stackoverflow.com/questions/11947540