【问题标题】:Get Html.DropDownList Value in a Controller Function MVC在控制器函数 MVC 中获取 Html.DropDownList 值
【发布时间】:2017-11-09 13:15:16
【问题描述】:

单击 ActionLink 时,我需要获取下拉列表的选定值。

这是我从控制器绑定的下拉列表。

 @Html.DropDownList("resource", new SelectList(ViewBag.ResourceList, ViewBag.SelectedResource), "Resource", new { @class = "span6", @style = "width:14%; color:black;"})

和ActionLink的功能不带[HttpPost]

@Html.ActionLink("Export Data", "ExportData");

我从 Request.Form["resource"] 尝试过,但它总是给我 null

public ActionResult ExportData()
        {
            var req = Request.Form["resource"];
        }

我只需要在我的 ExportData 函数内的 DropDownList 中获取文本值。

【问题讨论】:

  • DropDownList 和 Action 链接应该是表单的一部分,并且 Action 链接应该提交表单以使其正常工作。
  • ActionLink 只是一个链接,它不会发布任何形式的任何值。听起来您打算改为创建一个提交按钮。
  • 如果我使用锚标签会怎样?
  • @Zubair:您正在使用锚标记。所以我怀疑如果你继续使用锚标记,行为会是一样的。

标签: c# asp.net-mvc asp.net-mvc-4


【解决方案1】:

action 链接基本上会渲染一个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)

因此,要么在您要发布到服务器的数据周围放置一个&lt;form&gt;,然后将超链接更改为一个按钮以启动发布,或者使用 javascript 将“?resource=VAL”附加到超链接 HREF 的末尾属性,其中 VAL 是下拉列表中的值。

编辑:在之前我不得不这样做的几个场景中,我通常会在链接上添加一个数据属性(在 C# API 中,使用 data_ 作为数据属性):

@Html.ActionLink("Export Data", "ExportData", new { data_url = "ExportData" })

我使用数据属性的原因是为了保留原始 URL,这样我就不必进行字符串操作。使用 jQuery,在资源值更改时,您可以轻松更新 URL:

$("#resource").on("change", function(e) {
  var val = $(this).val();
  var href = $("#linkid").data("url") + "?resource=" + val;
  $("#linkid").attr("href", href);
});

只要下拉列表更改,它就会更新链接 url。

【讨论】:

  • 以及如何将 xyz 替换为以下链接中下拉列表的值? 导出数据
  • OK 编辑了上面的帖子,并附上了我使用的技术示例
【解决方案2】:

你应该试试GetValues() 方法:

public ActionResult ExportData()
{
    var req = Request.Form.GetValues("resource");
}

【讨论】:

  • GetValues 方法通常无法读取最初未发送到服务器的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2019-07-09
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多