【问题标题】:How can i get all selected options from a select (multiple) in as ASP.NET MVC with Request.Form?如何使用 Request.Form 从 ASP.NET MVC 中的一个选择(多个)中获取所有选定的选项?
【发布时间】:2015-02-21 18:22:38
【问题描述】:

我有一个包含多个项目的选择,并允许用户选择多个选项:

<select id="Emails" style="width: 100%;" size="16" multiple>
     @foreach (var email in Model._Emails)
     {
        @:<option value="@email.Id">@email.Adress</option>
     }
</select>

我想通过 Request.Form 获取选定的选项:

    [HttpPost]
    public ActionResult Person(personobject obj)
    {
        IEnumerable<string> selectedemails = Request.Form["Emails"]; //Selected Emails
        ....
    }

谢谢

【问题讨论】:

标签: c# asp.net-mvc


【解决方案1】:

Request.Form["Emails"] 将返回所有选定选项的逗号分隔字符串。

您需要将代码更改为 IEnumerable&lt;string&gt; selectedemails = Request.Form["Emails"].split(",");

【讨论】:

    【解决方案2】:

    您的&lt;select&gt; 标记没有name 属性,因此它的值不会被回发。修改html为

    <select name="Emails" id="Emails" style="width: 100%;" size="16" multiple>
      ....
    

    我建议您学习使用视图模型来显示/编辑要显示/编辑的内容,并使用 html 助手生成正确的 html 并允许 2 路模型绑定。

    【讨论】:

    • 它起作用了,但不像我预期的那样。实际上我想获取属性,但帖子只处理每个选项的值。我想我需要通过 Ajax 发布或放置一些脚本来序列化每个选项的属性。谢谢:)
    • “每个选项的属性”是什么意思Emails 的值将是一个包含所选选项值的数组(在您的情况下为所选的email.Id's)。您没有(至少没有显示)任何其他属性。您还希望发布哪些其他信息? (是的,您将需要 javascript 来回发控件值以外的任何内容)
    • 表单上有一个选项来检查电子邮件作为主体,所以结果是这样的:
    • 由于您必须生成该选项服务器端,您已经知道一个值为1email.id 在您回发时具有is_principal="true" 那么发送它的意义何在请求?无论如何它都是无效的html。
    猜你喜欢
    • 2015-02-19
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2019-02-17
    • 2012-11-06
    • 2023-04-08
    • 2023-01-11
    相关资源
    最近更新 更多