0

如何转换 $("#myChildTabName").load("./MyController/MyMethod/" + myParameter); 为使用@url.ActionMyMethod返回一个部分视图。基本上我想在单击选项卡时加载部分视图。

更新如下:我已经想出了一个如下的解决方案,但这给出了一个错误,说applicationID在当前上下文中不存在。jQuery 调用上方的警报会显示applicationID

//The below code DOES NOT work.

function LoadTabContents(applicationID)
{
        $("#currentTab").load('@Url.Action("TabMethod", "MyController", new { @id = applicationID })')
}

//The below code works fine.

function LoadTabContents(applicationID)
{
        $("#currentTab").load('@Url.Action("TabMethod", "MyController", new { @id = 123})')
}
4

4 回答 4

4

恐怕您尝试做的事情不能全部通过 Razor 完成。applicationID 必须附加在客户端,因为只有客户端知道真正的值。你可以尝试这样的事情:

function LoadTabContents(applicationID) {
    $("#currentTab").load('@Url.Action("TabMethod", "MyController")' + '/'+ applicationID);
}

URL.Action 将生成正确的路径,其余的将阶段性的参数附加到 JavaScript 函数。必须对斜线进行一些摆弄,因为我不记得 URL.action 是否会附加一个......

于 2012-09-24T20:32:37.043 回答
1

@Url.Action- 是服务器代码,您只能在 Razor 视图中使用它。看这个问题ASP.NET MVC Url.Action in JQuery is not recognize

于 2012-09-24T19:57:37.670 回答
0

1. 在这种情况下你不应该使用部分方法,如果你通过请求加载数据,你应该使用 return View(),而不是部分视图。但是如果你想在视图中添加一些 html,你应该使用 partial。在这种情况下,partial 意味着主视图的一部分。

如果你想避免使用主布局 - 设置属性layout=string.Empty

2. 您可以使用方法加载POST并使用like,在这种情况下您不能使用load(),因为它是GET请求。你 $.POST 或 $.Ajax

 public ActionResult Index()
        {
            if (Request.IsAjaxRequest())

                return PartialView("partialView");
            else
                return View();
        }
  1. 基于方法类型的部分与视图的简单选项设置布局如下:

@{ 布局 = Request.IsAjaxRequest() ?null : "~/Views/Shared/_Layout.cshtml"; }

于 2012-09-24T19:08:22.390 回答
0

可能这个解决方案对你有用

$("#currentTab").load('@Url.Action("TabMethod", "MyController", new { @id = "[APPLICATION_ID]"}).replace("[APPLICATION_ID]",applicationID)')
于 2012-09-24T20:42:03.333 回答