【问题标题】:How to set id for optional string for Dropdown in Strongly typed view..?如何在强类型视图中为下拉列表的可选字符串设置 id..?
【发布时间】:2016-06-06 15:51:34
【问题描述】:

我的强类型视图由如下下拉菜单组成:

  @Html.DropDownListFor(model => model.Text, ViewBag.Drop as SelectList,"Select a bus");

上面的可选字符串是“选择总线”。但我不能为此设置 id 属性为“0”。剩余的 id 值和文本我从 DB 中获取它。我知道我甚至可以将可选字符串放在 DB 表中只有。但我不想这样。 因此,如果我没有选择任何内容,并且如果我在我不想要的控制器方法中将“null”值提交给模型类的 Text 属性。在这种情况下,我只想返回“0”。所以我的控制器是下面。

public ActionResult Dropdown(DropdownCheck drpchk)
    {
        if (ModelState.IsValid)
        {
            return View("some name");
        }

        return View("Dropdown");
    }

那么如何将 id 值设置为可选字符串..?

【问题讨论】:

  • 从数据库中检索到值后,为什么不添加附加值?
  • @ChrisBint-如何添加它。?感谢您的关注..
  • 您为什么要这样做? “选择总线”null 选项的全部意义在于回发null,这样如果选择它,ModelState 将无效。通过将其设为value="0",您可以确保不会进行正确的验证,并且您的应用可能会失败。
  • @StephenMuecke-At value="0" 我想让post操作无效,而不是'null'。

标签: c# asp.net-mvc model-view-controller


【解决方案1】:

从 DB 检索后添加另一个 SelectListItem

var buses = db.Buses.Select(t => new SelectListItem
{
     Text = t.SomeText,
     Value = t.SomeValue
}).ToList();

buses.Add(new SelectListItem
{
     Text = "--Select a Bus--",
     Value = "0",
     Selected = true
});

ViewBag.Drop = buses;

在你看来:

 @Html.DropDownListFor(m => m.Text, ViewBag.Drop as IEnumerable<SelectListItem>);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多