首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Html.ActionLink动态参数

Html.ActionLink动态参数
EN

Stack Overflow用户
提问于 2014-05-15 18:55:47
回答 2查看 6.6K关注 0票数 0

我有一个下拉列表和一个链接旁边的下拉列表。单击按钮时,我希望在控制器上调用一个操作,以便通过下拉列表中选择的SelectedFileId下载我的文件。问题是,当我在控制台中查看链接url时,它只是

代码语言:javascript
复制
http://localhost/Download/DownloadFileById

不包括我的参数。我认为这是因为在生成html时,Model.SelectedFileId是空的。有什么方法可以让这个URL成为动态的,并且每当我改变下拉列表时改变它呢?

我的代码:

代码语言:javascript
复制
@Html.DropDownListFor(x => x.SelectedFileId, Model.FileIds)
@Html.ActionLink("Download File", 
                 "DownloadFileById", 
                 "Download", 
                 new { fileId = Model.SelectedFileId })
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-15 19:23:31

如果我正确理解这个问题,您希望能够在下拉列表中选择一个项,并将该值作为参数传递给您的服务器端操作。

没有javascript,这是行不通的。设置Model.SelectedFileId只会在页面呈现时设置FileId值。之后是客户端,这意味着您将需要javascript。

最简单的方法是一个简单的javascript方法。不要使用ActionLink,而是创建一个基本的html链接或按钮,并给它一个onclick处理程序。

代码语言:javascript
复制
@Html.DropDownListFor(x => x.SelectedFileId, Model.FileIds, new {id = "FileDownloadList"}) //Give this an id so you can select it later. Also assuming FileIds is a SelectList.
<input type=button onclick="DownloadFile" value="Download File"/> 

然后,您需要编写javascript,它接受所选的id并将其发送到操作方法服务器端。我不打算使用ajax,因为我不认为您可以使用ajax下载文件。但是,您可以做ActionLink应该做的事情,并将浏览器引导到您的文件中。

代码语言:javascript
复制
function DownloadFile(){
   var fileID = $("#FileDownloadList").val(); //Get selected FileID
   window.location = "http://localhost/Download/DownloadFileById?fileId=" + fileId; //Redirect to file. I am using the full path, but you could use a relative path.
}

这应该执行与ActionLink相同的操作,但是动态地选择下拉列表中的任何值。

票数 1
EN

Stack Overflow用户

发布于 2014-05-15 19:01:46

您对ActionLink使用了错误的重载。你用的是这一个

看起来就像

代码语言:javascript
复制
public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    Object routeValues,
    Object htmlAttributes
)

但是你想要这一个,它看起来像:

代码语言:javascript
复制
@Html.ActionLink("Download File", 
             "DownloadFileById", 
             "Download", 
             new { fileId = Model.SelectedFileId },
             null)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23686506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档