【发布时间】:2014-03-27 02:42:39
【问题描述】:
我有以下设置:
A) 父视图中的 HTML div 容器用于保存返回的部分视图:
<div id="divProjectCostList" class="tablecontainer">
</div>
B) 返回视图模型的控制器方法 -
[HttpGet]
public PartialViewResult GetProjectCostsById(int viewProjectId)
{
return PartialView("ProjectCost", GetProjectCostsViewModel(viewProjectId));
}
C) AJAX 将部分视图 HTML 渲染到上面的 div 中 -
$(document).ready(function () {
$(".retProjTran").click(function () {
var projectid = $(this).data("projectid");
$.ajax({
cache: false,
asynch: true,
type: "GET",
url: "@(Url.Action("GetProjectCostsById", "Project"))",
data: { "viewProjectId": projectid },
success: function (retData) {
$('#divProjectCostList').html(retData);
}
})
});
})
上面的工作正常。
为了从返回的模型中获取元素并在表格中呈现这些元素而设置的部分视图
@using (Html.BeginForm("ProjectCostList", "Project", FormMethod.Get))
{
<table class="table table-striped table-bordered table-condensed table-hover">
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.HiddenFor(modelItem => item.ProjectCostType)</td>
<td>
@Html.ActionLink(item.ProjectCostType.ToString(), "", null,
new { @class = "retProjDetails", data_details = item.ProjectCostId })
</td>
</tr>
}
</tbody>
</table>
}
这个Partial视图还需要访问一个JS方法-
$(".retProjDetails").click(function () {
$.ajax({
cache: false,
asynch: true,
type: "GET",
url: "@(Url.Action("GetProjectCostDetails", "Project"))",
data: { "viewProjectCostId": projectCostId },
success: function (retData) {
$('#divProjectCostList').html(retData);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError);
}
})
});
我可以看到从渲染的 Actionlink 调用了 JS 函数,但是相关的 Controller 操作根本没有被命中..
我想这是我如何渲染部分的某种问题,但无法弄清楚是什么。希望有人可以提供线索。很高兴有任何关于此设置是否最佳或我需要更改的建议..
【问题讨论】:
-
看看olivieralbertini.com/Tutorial/…。这是一个带有演示的教程。希望对你有帮助
标签: model-view-controller view controller partial