Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC3中的简单下拉列表_C#_Asp.net Mvc 3 - Fatal编程技术网

C# MVC3中的简单下拉列表

C# MVC3中的简单下拉列表,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,正在开发我的第一个MVC3应用程序。我有一个简单的视图,它有两个对象(对象a,对象B)。对象B是可选的。我已经创建了一个包含这两个对象的模型,并且让控制器正常工作,将数据来回传递到视图 我试图在一个简单的下拉列表中为用户决定是否要为对象B输入数据。下拉列表很简单-两个值“是”和“否” 例:继续“B”部分“? [是] [否] 在视图中,用户填写对象A的所有表单项。然后,他们可以选择填写对象B的项。如果他们想这样做,我希望他们选择“是”(当时我使用Jquery显示更多页面) 我的问题:我如何制作一个

正在开发我的第一个MVC3应用程序。我有一个简单的视图,它有两个对象(对象a,对象B)。对象B是可选的。我已经创建了一个包含这两个对象的模型,并且让控制器正常工作,将数据来回传递到视图

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

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

我的问题:我如何制作一个简单的下拉列表(甚至是一个基本的HTML输入type=“select”…),在他们提交表单后,我可以在控制器中访问它

在我的控制器中,我要执行以下操作:
*为对象A做一些事情
*检查他们是否选择了“是”
*为对象B做一些事情

像是/否这样简单的下拉列表是否需要进入模型?它没有键入任何内容-它只是用户在视图中做出的决定。我知道必须有一个简单的方法来做这件事(ViewBag?),但我是新手,显然迷路了


TL;DR-如何在我可以在控制器中访问的视图上创建简单的下拉列表?

是您的下拉列表应该是模型的一部分,否则控制器将无法从用户那里获得答案,以检查他们是否选择了是


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

从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; }
    }
在控制器中:

[HttpPost]
public ActionResult Edit(Model model)
{
    bool continueOn = model.Continue;   

}

好的-我可以使用Request.Form[“ddlChoice”];在控制器中,这将起作用。这是最好的方法吗?请看下面我的答案,我觉得如果使用Request.Form属性而不是使用强类型类,那么代码膨胀会更多,更容易出错。如果您觉得下面的答案有帮助,请将其标记为答案,祝您有一个好答案!
@Html.DropDownListFor(m => Model.Continue, Model.ContinueOptions)
[HttpPost]
public ActionResult Edit(Model model)
{
    bool continueOn = model.Continue;   

}