2013-03-04 68 views
1

我想从javascript传递一个字符串到剃刀ActionLink的使用jQuery里面剃刀

string filtering =$("#Hello").val();

@Html.ActionLink(Name, ControllerName, new { sort = columm, order = orderby, filters = filtering })

,但我不能够访问这个变量,我已经尝试@:filtering"@filtering",但无法正常工作,

如何将变量传递给控制器​​?

+1

你不能用'Html.ActionLink'来实现。 Razor在服务器端运行,而您的JavaScript在您的浏览器内运行...您需要使用AJAX将数据发送回服务器。 – nemesv 2013-03-04 11:56:40

+0

是否要访问控制器操作的过滤器值? – 2013-03-04 11:56:47

回答

0

如果要发送或数据上传给控制器的动作,那么你可以试试这个...

<input type="submit" id="btnFilter" value="Filter" name="btnFilter" /> 

$('#btnFilter').click(function() { 

     var sort = sortValue; 
     var order = orderValue; 
     var filter= filterValue; 

    $.ajax({ 
      type: 'POST', 
      url: '@Url.Action(ActionName, ControllerName)', 
      data:'{"sort":"' + sort+ '","order":"' + order+ '","filter":"' + filter+ '"}', 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: function (result) { 


      }, 
      error: function() { 

      } 
     }); 

}); 

然后....在控制器动作

public ActionResult ActionName(string sort ,string order , string filter) 
{ 
    // do Something here.... 
} 
0

你必须使用jQuery手动将参数添加到URL以分配锚标记的href属性。

首先,让我们脱掉滤波器参数关闭您ActionLink,并给它一个ID(所以大家可以参考它的jQuery):

@Html.ActionLink(Name, Controller, new { sort = columm, order = orderby }, new { id = "myLink" }) 

然后执行以下的jQuery:

$(function() { 
    var newLink = $("#myLink").attr("href") + "?filter= " + $("#Hello").val(); 
    $("#myLink").attr("href", newLink); 
}); 
0

我能做到的方式是将Url传递给控制器​​ window.location = window.location.protocol + "//" + location.host + "/Name/Controller/" + "?sort=sort" + "&order=order" + "&page=page" + "&filters=" + filter;