asp.net-mvc - MVC 4 - Ajax - 用另一个替换部分 View

标签 asp.net-mvc asp.net-mvc-4 asp.net-mvc-ajax

我试图根据点击的@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/

相关文章:

ASP.NET MVC4 捆绑单个文件

c# - 在 Controller 中调用异步方法

c# - 如何将模型中的列表作为 ajax 调用的参数传递?

javascript - angular.js 指令将变量传递给模板

c# - 为什么 .NET Core 的模型验证器在验证消息上显示模型属性的名称而不是 JSON 字段名称?

ajax - 使用带有下拉列表 mvc3 的 ajax

asp.net - 关于 ASP.NET MVC3 正在使用它的 ajax 助手和呈现不显眼的 javascript 做什么,是否有一个很好的解释?

asp.net-mvc - ASP.NET MVC Controller 的 [Authorize] 属性是否仅适用于成员资格提供程序?

c# - 将匿名对象发送到 Azure 中的服务总线队列

ajax - 如何通过单击 MVC 中的 html 操作链接打开一个新的弹出窗口?