我有一个MVC视图,它将有菜单和细节部分。在菜单上单击项目时,我希望详细部分得到更新。菜单和细节将是PartialViews。
我的主要观点如下(到目前为止):
@model WorkflowData.ProjectWorkflow
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="form-horizontal">
<h4>Project Workflow</h4>
<hr />
<div>
@{Html.RenderPartial(
"_WorkflowSteps",
Model.ProjectWorkflowSteps.ToList());
}
</div>
<div id="StepDetail"></div>
</div>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section scripts{
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")
<script>
$(function () {
$('.workflow-step').on('click', function (e) {
$.get($(this).prop('href'), function (response) {
$('#StepDetail').html(response)
});
});
});
</script>
}“_WorkflowSteps”部分视图使用以下方式呈现链接:
@Html.ActionLink(
item.StepName,
"Step",
new { id = item.ProjectworkflowPages.FirstOrDefault().ProjectWorkflowPageId },
new { @class = "workflow-step" });我对Step的控制器操作是:
public ActionResult Step(int id)
{
if (id == null)
return RedirectToAction("Index");
using (var _db = new MarkTestDbEntities())
{
var stepPage = (from s in _db.ProjectworkflowPages
where s.ProjectWorkflowPageId == id
select s).FirstOrDefault();
var projectModel = new Project
{
ProjectWorkflowId = stepPage.ProjectWorkflowStep.ProjectWorkflowId
};
return PartialView(string.Format("../{0}/{1}",stepPage.Controller, stepPage.CreateAction)
, projectModel);
}
return View();
}现在发生的情况是,我看到div被填充到了分部视图中,然后页面就用步骤中的部分视图刷新了。调试--我看到步骤操作实际上被调用了两次,但是当我查看呈现的源代码时,我不知道为什么。有什么想法吗?
发布于 2015-07-29 13:50:27
使用class="workflow-step"的元素是对Step()方法进行GET调用的链接。您正在处理这些元素的.click()事件并进行ajax调用,但是没有取消默认的重定向--这两者都是这样做的-- $.get()后面跟着重定向。您需要通过在脚本中包含return false;来取消默认操作
$('.workflow-step').on('click', function (e) {
$.get($(this).prop('href'), function (response) {
$('#StepDetail').html(response)
});
return false; // add this
});https://stackoverflow.com/questions/31702211
复制相似问题