【问题标题】:Pass a javascript variable as parameter to @url.Action()将 javascript 变量作为参数传递给 @url.Action()
【发布时间】:2015-08-24 05:51:16
【问题描述】:

是否可以将javascript变量作为参数传递给@url.Action(),因为据我所知可能存在服务器和客户端问题,我的要求是我必须根据过滤器下载文件,并且 ajax 调用不适用于下载文件。所以我对有效但无法实现的@url.Action() 进行了编码,任何人都可以建议我如何将参数传递给@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>

【问题讨论】:

  • 不可能。 Razor 代码在发送到视图之前在服务器上进行解析(javascript 变量是客户端,服务器上不存在)。您可以使用您的脚本来更新生成的&lt;a&gt; 标签的href 属性
  • @StephenMuecke 这就是我在问题中提到它的原因。知道如何替换那些
  • 您的链接当前生成什么 - 是 ../Export/1/2014-02-02/... 还是 ../Export?SelectedAccountType=1&amp;FromDate=2014-02-02&amp;...
  • @StephenMuecke 是的,先生,它正在生成 ../Export?SelectedAccountType=1&FromDate=2014-02-02&ToDate=2014-02-02"
  • 我可以向您展示如何构建href 属性,但是您为什么不使用带有FormMethod.Get 的表单呢? (根本不需要 jquery)

标签: javascript asp.net-mvc-4 url.action


【解决方案1】:

您需要使用 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" />
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    相关资源
    最近更新 更多