我找到了答案并尝试了几种方法。任何帮助将不胜感激!! 我有一个视图,它使用ajax脚本在每次单击时不重新加载页面。下面是代码。但是在生成完整的部分视图后,我希望用户在点击与控制器用户无关的链接时重定向完整的不同视图。
我的观点
@model IMONLP.Models.Search
@{
ViewBag.Title = "Search";
}
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
@using (Ajax.BeginForm("Search", new AjaxOptions() { UpdateTargetId = "results"
}))
{
<br />
@Html.TextBoxFor(m => m.search_text, new { style = "width: 200px;" })
<input type="submit" value="search" />
}
@Ajax.ActionLink("Try Demo", "PLNHK", "PLNHK", new AjaxOptions { })
// this ajax link should redirect to different view,
<div id="results">
@if (!String.IsNullOrEmpty(@Model.search_text))
{
Html.RenderPartial("Searchprocess", Model);
}
</div>
我的控制器:
public ActionResult Search(Search s)
{
//do something
return PartialView("Searchprocess", s);
}
public ActionResult Selected(Search s)
{
//DO something
return PartialView("Selected", s);
}
上述“TryDEMO”“PLNHK”ajax动作链接必须重定向到新控制器和新动作并返回该动作返回的视图。每次我点击它,我发现它移动到该控制器,然后移动到相应的视图,但它再次回到旧页面。我使用@html.actionlink而不是Ajax,但现在我收到了这个错误
The "RenderBody" method has not been called for layout page "~/Views/PLNHK/PLNHK.cshtml".
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
编辑:我确实创建了PLNHK.cshtml。当我试图调试它时,控件转到PLNHK控制器然后转到PLNHK视图(PLNHK.cshtml)解析该页面中的每一步,但最后我会得到输出为旧页面。我以为可能是页面之前的Ajax脚本是原因。