在我的主編輯視圖中,我有3個包含主視圖模型的子數據的部分視圖。我也有用於輸入和保存相關數據(如筆記等)的html文本框。 輸入項目或選擇並傳遞給控制器操作後,如何刷新我的部分視圖?這是迄今爲止的代碼,但它不起作用。我認爲我需要通過我的部分視圖傳回模型? 我正在使用ajax來調用我的控制器方法。 局部視圖:使用jQuery刷新局部視圖
@model cummins_db.Models.CaseComplaint
<table width="100%">
<tr>
<td>
@Html.DisplayFor(modelItem => Model.ComplaintCode.ComplaintCodeName)
</td>
<td>
@Html.DisplayFor(modelItem => Model.ComplaintCode.ComplaintType)
</td>
</tr>
</table>
這是局部視圖位於HTML:
<div class="editor-label">
@Html.Label("Search and select a complaint code")
</div>
<div class="textarea-field">
<input id = "CodeByNumber" type="text" />
</div>
@Html.ActionLink("Refresh", "Edit", new { id = Model.CasesID })
<table width="100%">
<tr>
<th>Complaint Code</th>
<th>Complaint Description</th>
</tr>
@try
{
foreach (var comp_item in Model.CaseComplaint)
{
<div id="complaintlist">
@Html.Partial("_CaseComplaintCodes", comp_item)
</div>
}
}
catch
{
}
</table>
這裏是返回局部視圖控制器方法。
public ActionResult SelectForCase(int caseid, int compid, string compname)
{
if (ModelState.IsValid)
{
CaseComplaint c = new CaseComplaint
{
CasesID = caseid,
ComplaintCodeID = compid
};
db.CaseComplaints.Add(c);
db.SaveChanges();
}
return PartialView("_CaseComplaintCodes");
}
jQuery ajax調用控制器,它是一個自動完成功能選擇的一部分。
$('#CodeByNumber').autocomplete(
{
source: function (request, response) {
$.ajax({
url: "/Cases/CodeByNumber", type: "GET", dataType: "json",
data: { searchText: request.term, maxResults: 10 },
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data, function (item) {
return {
label: item.ComplaintType,
value: item.ComplaintCodeName,
id: item.ComplaintCodeID
}; //return
}) //map
); //response
} //success
}); //ajax
}, //source
select: function (event, ui) {
var url = "/Cases/SelectForCase";
$.ajax({
type: "GET",
dataType: "html",
url: url,
data: { caseid: $('#CaseID').val(), compid: ui.item.id, compname: ui.item.label },
success: function (result) { $('#complaintlist').html(result); }
});
},
minLength: 1
});
您是否嘗試過在'SelectForCase'行動的局部視圖返回'CaseCompliant'模式?例如'return PartialView(「_ CaseComplaintCodes」,c);'。當然,如果狀態無效,那麼返回一個臨時模型。 – 2012-07-05 21:01:19
@Mario謝謝。我剛剛嘗試過,響應是沒有數據的html。 <表寬度= 「100%」>
所以你得到空參數'SelectForCase(INT caseid,INT compid,串COMPNAME)'動作什麼時候打電話?還是你在空模型中發送?不明白它是否適用於你。 – 2012-07-05 21:14:49