单击ActionLink时,我需要获取下拉列表的选定值。
这是我从控制器绑定的下拉列表。
@Html.DropDownList("resource", new SelectList(ViewBag.ResourceList, ViewBag.SelectedResource), "Resource", new { @class = "span6", @style = "width:14%; color:black;"})
带有[HttpPost]
功能的ActionLink@Html.ActionLink("Export Data", "ExportData");
我试过Request.Form["resource"]
,但它一直给我
public ActionResult ExportData()
{
var req = Request.Form["resource"];
}
我只需要获取ExportData函数中DropDownList中的文本值。
答案 0 :(得分:1)
操作链接基本上会呈现a
标记,而a标记看起来大致会像这样;
<a href="ExportData">Export Data</a>
由于链接发出GET请求,因此需要通过以下方式传递任何参数:
<a href="ExportData?resource=xyz">Export Data</a>
Request.Form
在get请求中始终为空,因为POST请求会填充表单集合。但无论哪种方式,使用GET或POST请求,您都可以将数据作为操作方法的参数传递,如:
public ActionResult ExportData(string resource)
因此要么将<form>
放在要发布到服务器的数据周围,要么将超链接更改为按钮以启动帖子,要么使用javascript追加&#34;?resource = VAL&#34;到超链接HREF属性的末尾,其中VAL是下拉列表中的值。
编辑:在以前我必须这样做的几个场景中,我通常会在链接上添加一个数据属性(在C#API中,使用data_作为数据属性) ):
@Html.ActionLink("Export Data", "ExportData", new { data_url = "ExportData" })
我使用数据属性的原因是为了保留原始网址,这样我就不必进行字符串操作。使用jQuery,在资源值更改时,您可以轻松更新URL:
$("#resource").on("change", function(e) {
var val = $(this).val();
var href = $("#linkid").data("url") + "?resource=" + val;
$("#linkid").attr("href", href);
});
只要下拉列表发生变化,它就会更新链接网址。
答案 1 :(得分:-1)
您应该尝试GetValues()
方法:
public ActionResult ExportData()
{
var req = Request.Form.GetValues("resource");
}