调用部分视图
本文关键字:视图 调用部 | 更新日期: 2023-09-27 18:11:02
我在Web Forms中的遗留项目将在用户单击按钮时显示一个面板。我目前的项目是在c# MVC中重建这个功能。
该视图将使用Javascript和AJAX根据需要显示部分视图。代码在调试器中正常运行,但不调用分部视图。
我已经使用了sofposts来设置JS,以便包含部分视图的div被正确显示。我在AJAX或其他地方遗漏了什么?(也许我需要装饰目标动作?也许我需要在局部视图中做些什么?)
视图的相关部分:
<script type="text/javascript">
//Show the Add Project section.
function NewProject() {
//1. Reset the Add Project partial view.
//2. Show the Add Project partial view.
//3. Put focus into the project title field.
//4. Hide the button.
$("#divNewProject").show();
$.ajax({
url: "/Organization/AddProject/"
}).done(function () {
$("#divNewProject").html(data);
$("#ProjectTitle").focus();
$("#ProjectTitle").scrollIntoView();
});
$("#divAddProject").hide();
}
</script>
…
<div id="divAddProject">
@* Button to add a project, showing/hiding a partial view *@
<button type="button" name="btnAddProject" id="btnAddProject" value="Add" onclick="NewProject()" class="btn">
<span class="wizard-step-text">Add New Project</span>
</button>
</div>
<div id="divNewProject" hidden="hidden">
This is a test. It should start out hidden and later be shown.
</div>
你可以这样做:
function NewProject() {
$("#divNewProject").show();
$.ajax({
url: '@Url.Action("AddProject","Organization")',
success : function(data)
{
$("#divNewProject").html(data);
$("#ProjectTitle").focus();
$("#ProjectTitle").scrollIntoView();
$("#divAddProject").hide();
}
});
}
done内部的函数应该有"data"作为参数。
$.ajax({
url: "/Organization/AddProject/"
}).done(function (data) {
$("#divNewProject").html(data);
$("#ProjectTitle").focus();
$("#ProjectTitle").scrollIntoView();
});
在调试时,在done
函数内设置一个断点。它应该命中,并且您将看到您没有定义data
变量。
应该是:
}).done(function(data) {
// Do something with data
})