2013-03-04 1 views
1

Я пытаюсь передать строку из JavaScript в бритве ActionLinkИспользование Jquery внутри Razor

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

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

, но я не в состоянии получить доступ к этой переменной, я уже попробуйте @:filtering или "@filtering", но все равно не работает,

Как передать переменную контроллеру?

+1

Вы не можете сделать это с помощью 'Html.ActionLink'. Razor работает на стороне сервера, пока ваш javascript запускается внутри вашего браузера ... Вам понадобится AJAX для отправки данных на ваш сервер. – nemesv

+0

Вы хотите получить доступ к значению фильтра для действия контроллера? –

ответ

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

Вы бы чтобы вручную добавить параметр в URL вручную, используя jQuery для назначения атрибута привязки href.

Во-первых, давайте снимем параметр фильтра от вашего ActionLink и дать ему идентификатор (так мы можем ссылаться на него в 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;