5

我正在尝试用部分视图替换主视图中 div 的内容,具体取决于单击了哪个@Ajax.ActionLink。

最初我加载 _CaseLoad 局部视图,然后当我单击相关的 ActionLink 时,我希望能够在两个局部视图 _CaseLoad 和 _Vacancies 之间切换。我在“主”文件夹中有部分视图和索引视图。

当我单击“空缺”链接时,它会简要显示 LoadingElementID,但它不会用 _Vacancies 部分视图替换 _CaseLoad 部分视图?

控制器动作(MainController):

    public ActionResult Index(int page = 1, string searchTerm = null)
    {
        MainIndexViewModel model = new MainIndexViewModel()
        // Populate Model

        return View(model);

    }

主索引视图:

@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>
4

2 回答 2

5

您对@Ajax.ActionLink 的调用是错误的,您正在这样做:

@Ajax.ActionLink("CaseLoad", "_CaseLoad", "Main", null, new AjaxOptions() { UpdateTargetId = "Main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET",
            LoadingElementId = "busycycle" })

这意味着您的链接文本是“CaseLoad”,而“MainController”中要调用的操作是“_CaseLoad”?“_CaseLoad”不是您的局部视图的名称吗?

要解决此问题,您必须在 MainController 中创建 CaseLoad 和 Vacancy 操作,使这两种方法都返回 PartialView("_CaseLoad.cshtml", model); 或 PartialView("_Vacancys.cshtml, model) 如下所示:

public ActionResult CaseLoad(int page = 1, string searchTerm = null)
{
    MainIndexViewModel model = new MainIndexViewModel()
    // Poopulate Model

    return PartialView("_CaseLoad.cshtml", model);
}

我只是切断了所有实现细节,只是为了让您了解如何解决这个问题。

于 2013-04-18T13:38:22.883 回答
0

我会说尝试使用具有一组良好开发人员工具的浏览器(我推荐 Chrome)并点击F12. 打开开发工具,切换到网络选项卡,然后单击您的 ajax 链接。Loading 元素仅在请求进行时显示,并不一定意味着它成功。通过使用 Network 选项卡,您应该能够看到 Ajax 请求的响应是什么,并确定它是否是一个错误,以及生成的部分视图实际上是什么。

于 2013-04-18T13:19:33.723 回答