MVC3 中的简单下拉列表
本文关键字:下拉列表 简单 MVC3 | 更新日期: 2023-09-27 18:35:28
正在开发我的第一个MVC3应用程序。 我有一个简单的视图,有 2 个对象(对象 A、对象 B)。 对象 B 是可选的。 我创建了一个包含这两个对象的模型,并让控制器很好地将数据来回传递到视图。
我正在尝试为用户输入一个简单的下拉列表,以决定是否要为对象 B 输入数据。 下拉列表很简单 - 两个值"是"和"否"。例如:继续"B"部分?
[是]
[否]
在视图上,用户填写对象 A 的所有表单项。 然后,他们可以选择填写对象 B 的项目。 如果他们想这样做,我希望他们选择"是"(我当时使用 Jquery 显示更多页面)。
我的问题:如何制作一个简单的下拉列表(甚至是基本的HTML输入类型="select"...),我可以在提交表单后在控制器中访问?
在我的控制器中,我想执行以下操作:
* 为对象 A
做事* 检查他们是否选择了"是
"* 为对象 B
做事
像"是/否"下拉列表这样简单的东西是否需要进入模型?它没有键入任何内容 - 它只是用户在视图中做出的决定。 我知道必须有一个简单的方法来做到这一点(ViewBag?),但我是新手,显然迷路了。
TL;DR - 如何在可在控制器中访问的视图上创建简单的下拉列表?
从
HTTPPOST 中的视图获取对象的值的经验法则是将输入控件 id 和名称属性命名为与模型属性名称相同的名称。执行此操作的一种简单方法是使用 Html 帮助程序。
public class Model
{
public Model()
{
List<SelectListItem> options = new List<SelectListItem>();
options.Add(new SelectListItem { Value = true.ToString(), Text = "yes" });
options.Add(new SelectListItem { Value = false.ToString(), Text = "no" });
ContinueOptions = options;
}
public bool Continue { get; set; }
public IEnumerable<SelectListItem> ContinueOptions { get; set; }
}
在您看来:
@Html.DropDownListFor(m => Model.Continue, Model.ContinueOptions)
在控制器中:
[HttpPost]
public ActionResult Edit(Model model)
{
bool continueOn = model.Continue;
}
是的
,您的下拉列表应该是模型的一部分,否则控制器将不会有用户的答案 检查以查看他们是否选择了"是"。
public SomeViewModel
{
public ObjectA A { get; set; }
public ObjectB B { get; set; }
public bool? IsBSelected { get; set; }
}
我通常使用bool?
只是因为我想知道用户是选择了 on 还是另一个,但使用bool
也可以。