【问题标题】:Bootstrap Multiselect Get Selected values on HttpPostBootstrap Multiselect 获取 HttpPost 上的选定值
【发布时间】:2015-04-06 07:12:11
【问题描述】:

我正在使用这个Bootstrap Multiselect,我的问题是我无法在 ASP.Net MVC 上的 HttpPost 上获取选定的值。

遇到的问题:

  • 点击保存后,只有第一个选择的值出现在 该模型。 (已解决

  • 点击保存后,只有第一个选择的值出现在 下拉列表。

示例.chtml:

@model SampleProject.Models.SampleViewModel

@using (Html.BeginForm())
{
    @Html.DropDownListFor(model => model.Selected, new SelectList(Model.List, "value", "text"), new { @class = "multiselect form-control", multiple = "multiple" })
    <input type="submit" value="Save" />
}

型号:

public class SampleViewModel
{
    public string[] Selected { get; set; }
    public SelectList List { get; set; }
}

控制器:

public class DashboardController : Controller
{
    public ActionResult Sample()
    {
        SampleViewModel model = new SampleViewModel();
        model.List = new SelectList(new List<string>() { "1", "2", "3" });

        return View(model);
    }

    [HttpPost]
    public ActionResult Sample(SampleViewModel model)
    {
        model.List = new SelectList(new List<string>() { "1", "2", "3" });

        return View(model);
    }
}

选择:

我无法在 HttpPost 上正确获取所选值

代码隐藏/HttpPost:(错误)

HttpPost 之后:(正确)

【问题讨论】:

    标签: asp.net-mvc twitter-bootstrap asp.net-mvc-4


    【解决方案1】:

    &lt;select multiple="multiple"&gt; 回发一组值(不是单个值)。您的属性Selected 需要为IEnumerable,例如

    public string[] Selected { get; set; }
    

    附注:由于 text 和 value 属性相同,您可以通过将 List 属性设置为 SelectList 来简化代码

    public SelectList List { get; set; }
    

    然后在控制器中

    model.List = new SelectList(new List<string>() { "1", "2", "3" })
    

    (虽然不清楚你为什么不使用int

    【讨论】:

    • 先生,我点击保存后还有一个问题。
    • 点击保存后,如果在DropdownList上显示为选中,则仅显示第一个选择的值,而不是多个项目。(请参阅第三张图片上面。)
    • 您在返回视图时没有重新分配SelectList
    • 先生,我已经这样做了,但它仍然只返回一个选定的项目。 (参考上面的代码。)
    • string[] Selecteds = model.Selected; 是干什么用的? (你在哪里使用值Selecteds)。您是否将属性 Selected 更改为 typeof string[]?此外,您应该删除引导插件并使用默认的 html 选择元素进行测试
    【解决方案2】:

    在任何地方都没有看到这个答案,所以要解决在回发后只选择一项的问题,您需要使用:

    @Html.ListBoxFor(.. 
    instead of @Html.DropDownListFor
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-03
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多