MVC jquery调用动作控制器无法正常工作

时间:2012-09-21 21:29:00

标签: jquery asp.net-mvc

我有一些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 个答案:

答案 0 :(得分:0)

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

Url.Action - 在客户端上选择了服务器代码(ASP.NET MVC帮助程序)和workspaceId,这就是为什么无法在此创建url的原因。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

您可以使用以下内容:

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