MVC3中的简单DropDownList

时间:2012-05-25 06:06:27

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

使用我的第一个MVC3应用程序。我有一个简单的视图,有2个对象(对象A,对象B)。对象B是可选的。我已经创建了一个包含两个对象的模型,并且Controller可以很好地将数据来回传递给View。

我正在尝试为用户输入一个简单的DropDownList来决定是否要输入对象B的数据。下拉列表很简单 - 两个值为“是”和“否”。
例如:继续使用“B”部分?
[是]
[否]

在视图上,用户填写对象A的所有表单项。然后,他们可以选择填写对象B的项目。如果他们想要这样做,我希望他们选择“是”(我正在使用Jquery来显示当时的更多页面。

我的问题:如何制作一个简单的Dropdownlist(甚至是基本的HTML输入类型=“select”...),我可以在提交表单后在Controller中访问它?

在我的控制器中,我想做以下事项:
*为对象A做东西 *检查他们是否选择了是 *做对象B的东西

像Yes / No下拉这样简单的东西是否需要进入模型?它没有输入任何内容 - 它只是用户在View中做出的决定。我知道必须有一个简单的方法(ViewBag?),但我是新的,显然已经迷失了。

TL; DR - 如何在我可以在Controller中访问的视图上创建简单的DropdownList?

2 个答案:

答案 0 :(得分:2)

从HTTPPOST中为您的对象获取视图中的值的经验法则是将输入控件ID和名称属性命名为与Models属性名称相同。一个简单的方法是使用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;   

}

答案 1 :(得分:0)

是的,你的下拉应该是模型的一部分,否则控制器将无法得到用户的答案检查他们是否选择了是

public SomeViewModel
{
  public ObjectA A { get; set; }
  public ObjectB B { get; set; }
  public bool? IsBSelected { get; set; }
}

我通常只使用bool?,因为我想知道用户是选择了还是其他用户,但使用bool也可以。