2015-06-09 161 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

你需要建立你的網址使用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

相關問題