2013-03-04 62 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;