2015-06-09 3 views
1

можно передать переменную javascript в качестве параметра @ url.Action(), поскольку, насколько я знаю, может возникнуть проблема с сервером и клиентом, мое требование: я должен загрузить файл в соответствии с фильтром, а вызов ajax не работает с загрузкой файла. поэтому у меня есть harcode @ url.Action(), который работает, но не может реализовать это, может ли кто-нибудь предложить мне, как передать параметр @ url.Action() или любой другой подход.Передайте переменную javascript как параметр в @ url.Action()

вот мой код

<a href="@Url.Action("Export", new { SelectedAccountType="1", FromDate = "2014-02-02", ToDate = "2014-02-02", SelectedAccount = "", SelectedUser = "", SelectedTeam = "" })" class="btn-primary" id="exportbutton2"> Export as CSV</a> 

и это параметр я хочу назначить @ Url.Action

<script type="text/javascript"> 
var accountType = $('#SelectedAccountType').val(); 
     var fromDate = $('#FromDate').val(); 
     var toDate = $('#ToDate').val(); 
     var accountId = $('#SelectedAccount').val(); 
     var userId = $('#SelectedUser').val(); 
     var teamId = $('#SelectedTeam').val(); 
</script> 
+2

Невозможно. Код Razor анализируется на сервере до его отправки в представление (переменная javascript является клиентской стороной и не существует на сервере). Вы можете использовать свой скрипт для обновления атрибута 'href' генерируемого' 'тега –

+0

Что генерирует ваша ссылка в настоящее время - это '../ Export/1/2014-02-02/...' или '../Export?SelectedAccountType=1&FromDate=2014-02- 02 & ... '? –

ответ

6

Вам необходимо создать вам URL-адрес с помощью JavaScript/JQuery. По мнению изменить ссылку на

<a id="export" href=#">Export as CSV</a> 

Затем в сценарии

var baseurl = '@Url.Action("Export")'; 
$('#export').click(function() { 
    var url = baseurl + '?SelectedAccountType=' + $('#SelectedAccountType').val() + '&FromDate=' + $('#FromDate').val() + '&ToDate=' + $('#ToDate').val() + ...etc 
    location.href=url; 
}); 

Однако если форма отмечена FormMethod.Get, то вы можете просто использовать обычную кнопку отправки и не JQuery не требуется

@using (Html.BeginForm("Export", "yourControllerName", FormMethod.Get)) 
{ 
    @Html.TextBoxForm(m => m.SelectedAccountType) 
    .... 
    <input type="submit" value="Export" /> 
} 
+0

, вы прекрасно работаете. – Teerth

Смежные вопросы