我希望實現的基本功能是在選擇下拉列表項目時更新表格的內容。當用戶進行新選擇並從數據庫檢索新信息並重新填充表格時,這將會更新。在ASP.Net中渲染局部視圖使用Ajax的MVC3 Razor
另外值得一提的是,我想要的.change()的DropDownListFor與給ajaxForm中不包含工作,但在其他地方出現在頁面上(當然以另一種形式)
要做到這一點我看着這個問題:Rendering partial view dynamically in ASP.Net MVC3 Razor using Ajax call to Action哪個能夠做好我想要做的事情。
到目前爲止,我有一個控制器方法,可處理填充定製視圖模型的局部視圖:
[HttpPost]
public ActionResult CompanyBillingBandDetails(int id = 0)
{
var viewModel = new BillingGroupDetailsViewModel();
var billingGroupBillingBands =
_model.GetAllRecordsWhere<BillingGroupBillingBand>(x => x.BillingGroupId == id).ToList();
foreach (var band in billingGroupBillingBands)
{
viewModel.BillingBands.Add(band.BillingBand);
}
return PartialView("BillingGroupDetailsPartial", viewModel);
}
視圖模型我想填充每個電話:
public class BillingGroupDetailsViewModel
{
public List<BillingBand> BillingBands { get; set; }
}
強類型模型我使用作爲用於局部視圖
public class BillingBandsObject
{
public int BillingBandId { get; set; }
public int RangeFrom { get; set; }
public int RangeTo { get; set; }
public Decimal Charge { get; set; }
public int BillingTypeId { get; set; }
public bool Delete { get; set; }
}
的雜色一個模型人查看填充和回報:
@model xxx.xxx.DTO.Objects.BillingBandsObject
<tr>
<td>
@Html.DisplayTextFor(x => x.RangeFrom)
</td>
</tr>
<tr>
<td>
@Html.DisplayTextFor(x => x.RangeTo)
</td>
</tr>
<tr>
<td>
@Html.DisplayTextFor(x => x.Charge)
</td>
</tr>
的頁面的這一部分的剃刀代碼:
<table>
<thead>
<tr>
<th>
Range From
</th>
<th>
Range To
</th>
<th>
Charge
</th>
</tr>
</thead>
<tbody>
@using (Ajax.BeginForm("CompanyBillingBandDetails", new AjaxOptions() { UpdateTargetId = "details", id = "ajaxform" }))
{
<div id="details">
@Html.Action("CompanyBillingBandDetails", new { id = 1 })
</div>
}
</tbody>
</table>
,最後我解除幾乎直接從Darin的回答功能:
$(function() {
$('#billinggrouplist').change(function() {
// This event will be triggered when the dropdown list selection changes
// We start by fetching the form element. Note that if you have
// multiple forms on the page it would be better to provide it
// an unique id in the Ajax.BeginForm helper and then use id selector:
var form = $('#ajaxform');
// finally we send the AJAX request:
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
success: function (result) {
// The AJAX request succeeded and the result variable
// will contain the partial HTML returned by the action
// we inject it into the div:
$('#details').html(result);
}
});
});
});
目前我已經與許多錯誤作鬥爭,目前我面臨着:
「執行處理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'的子請求時出錯。」
但是,我覺得我對整個問題的理解可能缺乏。
任何幫助表示讚賞!
您應該添加圍繞相關操作方法的控制器定義。 –
是否存在內部異常? –
@ChrisMarisic我不明白爲什麼?我正在使用的唯一類變量是「_model」,它是我正在使用的存儲庫的服務層,並且在那裏沒有問題。我誤解你了嗎? – M05Pr1mty