我试图根据点击的@Ajax.ActionLink 用部分 View 替换主 View 中 div 的内容。
最初我加载 _CaseLoad 部分 View ,然后当我单击相关的 ActionLink 时,我希望能够在两个部分 View _CaseLoad 和 _Vacances 之间切换。我在“主”文件夹中有部分 View 和索引 View 。
当我单击“空缺”链接时,它会简要显示 LoadingElementID,但它不会将 _CaseLoad 部分 View 替换为 _Vacances 部分 View ?
Controller Action (MainController):
public ActionResult Index(int page = 1, string searchTerm = null)
{
MainIndexViewModel model = new MainIndexViewModel()
// Populate Model
return View(model);
}
主索引 View :
@model Project.WebUI.Models.MainIndexViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div id="MainIndex">
<div id="Menu">
@Ajax.ActionLink("CaseLoad", "_CaseLoad", "Main", null, new AjaxOptions() { UpdateTargetId = "Main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET",
LoadingElementId = "busycycle" }) |
@Ajax.ActionLink("Vacancies", "_Vacancies", "Main", null, new AjaxOptions() { UpdateTargetId = "Main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET",
LoadingElementId = "busycycle" })
</div><hr/>
<div id="busycycle" style="display:none;"><img src="~/Content/images/preloader-w8-cycle-black.gif" /></div>
<div id="Main">
@Html.Partial("_CaseLoad")
</div>
</div>
最佳答案
您对@Ajax.ActionLink 的调用是错误的,您正在这样做:
@Ajax.ActionLink("CaseLoad", "_CaseLoad", "Main", null, new AjaxOptions() { UpdateTargetId = "Main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET",
LoadingElementId = "busycycle" })
这意味着您的链接文本是“CaseLoad”,而要在“MainController”中调用的操作是“_CaseLoad”? “_CaseLoad”不是你的局部 View 的名称吗?
要解决此问题,您必须在 MainController 中创建 CaseLoad 和 Vacancies 操作,使这两个方法都返回 PartialView("_CaseLoad.cshtml", model);或 PartialView("_Vacances.cshtml, model) 如下所示:
public ActionResult CaseLoad(int page = 1, string searchTerm = null)
{
MainIndexViewModel model = new MainIndexViewModel()
// Poopulate Model
return PartialView("_CaseLoad.cshtml", model);
}
我只是切断了所有实现细节,只是为了让您了解如何解决问题。
关于asp.net-mvc - MVC 4 - Ajax - 用另一个替换部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16083459/