0

我有一些下面显示的 jquery 需要运行我的 mvc 操作并返回视图。

   $("#workspaces").change(function () {
    var workspaceId = $('#workspaces').val();
    var url = '@Url.Action("SingleWorkspace", "Workspaces", new { id = workspaceId })';
    $.ajax({
        url: url,
        success: function () { alert("true"); }
    });
});

基本上我遇到的第一个问题是,如果在其上方声明了 var,它无法识别 url 操作中的 workspaceId。

其次,这是一个局部视图,因为它是一个下拉菜单。那么通过调用上面的 url.action 会如何加载页面呢?

任何帮助,将不胜感激

干杯

4

4 回答 4

0
   var workspaceId = $('#workspaces').val();  
   var url = '@Url.Action("SingleWorkspace", "Workspaces", new { id = workspaceId })';

Url.Action- 是服务器代码(ASP.NET MVC 助手)并workspaceId在客户端上选择,这就是为什么url不能在这里创建。

于 2012-09-21T21:41:03.633 回答
0

首先,workspaceId是在客户端定义的,而是在服务器上运行的,因此在代码执行@Url.Action时该变量不存在。@Url.Action您希望将workSpaceIdjQuery ajax 调用的 data 属性改为发送,或者将 附加workspaceId到客户端上的 url javascript 变量中。

其次,例如,如果动作返回一个局部视图,那么 jQuery 成功处理程序将接收一个 html 字符串,您可以将其注入到一个元素中,例如div.

于 2012-09-21T21:42:22.410 回答
0

你不能在 javascript 中那样做。您可以做的是获取SingleWorkSpace操作方法的路径并将其附加workspaceId到该路径。

var url = "@Url.Action("SingleWorkspace", "Workspaces")/"+workspaceId;

或者

var url = "@Url.Action("SingleWorkspace", "Workspaces")?id="+workspaceId;
于 2012-09-21T21:42:40.340 回答
0

您可以使用以下内容:

var workspaceId = $('#workspaces').val();
var url = '@Url.Action("SingleWorkspace", "Workspaces", new { id = "__id__" })'
    .replace('__id__', workspaceId);
于 2012-09-22T08:23:59.807 回答