Asp.net mvc 如何在Razor语法中创建静态下拉列表?

Asp.net mvc 如何在Razor语法中创建静态下拉列表?,asp.net-mvc,html.dropdownlistfor,Asp.net Mvc,Html.dropdownlistfor,在谷歌和Stack Overflow上搜索了几个小时之后,我找不到一个血淋淋的例子,说明如何构建一个完全没有大脑的简单下拉列表,而不是来自数据库。老实说,我很难理解MVC。有人能告诉我如何创建这个: <select name="FooBarDropDown" id="FooBarDropDown"> <option value="Option1" selected>This is Option 1</option> <option val

在谷歌和Stack Overflow上搜索了几个小时之后,我找不到一个血淋淋的例子,说明如何构建一个完全没有大脑的简单下拉列表,而不是来自数据库。老实说,我很难理解MVC。有人能告诉我如何创建这个:

<select name="FooBarDropDown" id="FooBarDropDown">
    <option value="Option1" selected>This is Option 1</option>
    <option value="Option2">This is Option 2</option>
    <option value="Option3">This is Option 3</option>
</select>

我正在寻找一个全在一行解决方案。。。一切都在眼前。我在语法方面花了很多时间。

我想这就是你要找的。不过,最好将列表结构重构到视图模型或控制器中

@Html.DropDownList("FooBarDropDown", new List<SelectListItem>
{
    new SelectListItem{ Text="Option 1", Value = "1" },
    new SelectListItem{ Text="Option 2", Value = "2" },
    new SelectListItem{ Text="Option 3", Value = "3" },
 }) 
查看示例:

@Html.DropDownList("fooBarDropDown", DropDownListUtility.GetFooBarDropDown("2"))
看一看这本书


您可以初始化
SelectListItem
列表(直接在视图中完成),然后将其传递给
DropDownList
帮助程序:

@{         
    List<SelectListItem> Listitems = new List<SelectListItem>();
    for(int i = 1; i <= 50; i++)
    {
       items.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
    }
 }

 @Html.DropDownList("ddlSequence", Listitems , new { id = "ddlSequence", @class = "form-control" })
     
@{
List Listitems=新列表();

对于(int i=1;i您不必使用
DropDownList
helper…事实上,如果这只是您拥有的三个选项,我会像您一样写出来。:-)是的,我知道。但是……构建块。我试着从简单的方法开始,然后从那里开始。出于我在问题中没有解释的原因,我想知道如何做到这一点,而不是
var model=dbContext.Todos.ToList()
write
var model=new List{new Todo(),new Todo()}
../\n你想在这个线程上留下评论吗?我留下了。你声称你可以用来自数据库的条目创建一个工作的dropdownlist。使用非常简单的代码,你可以实例化一个简单的
列表,而不是从数据库中读取条目,它为你的下拉列表提供数据。当然,正如我的评论所指出的那样虽然不太明显,但我们不知道您有什么代码以及您需要替换哪些特定功能。太好了!谢谢!!是的,这正是我想要的!现在,布兰登,我可以请您将您的原始答案保留在tack中,然后在它下面展示,如何,正如您所说,以最佳实践方式进行此操作吗?布兰登呃。先生,您刚刚帮我省去了很多小时的挫折。谢谢。很高兴我能帮助您。干杯!@Gullbyrd-如果您希望值是强类型的,这很有用。假设您有一个表示记录状态的枚举(挂起、发布、删除)。您可以在代码中使用一个方法来枚举枚举值并生成选项。如果以后要添加状态,可以很容易地添加。这种方法也可以很好地保持代码“干燥”。如果您有多个位置显示同一个选择列表,您可以在一个位置用代码构建列表,然后在所有视图中引用该列表。@BrandonO'Dell感谢您的响应,很好的观点。但是如果您不需要在多个位置使用此列表,则只使用选择列表更简单。我认为人们会成为列表的奴隶“框架的工作方式”,并拒绝承认有时它只是比它的价值更复杂。或者更简单更好。谢谢Jasen!我真的很感激它。但是,我没有让它工作。我在运行时遇到这个错误:编译器错误消息:CS0103:名称“items”在当前上下文中不存在”。我补充道在[HttpGet]ActionResult中向控制器发送“列表项=…”。位置错误?我缺少什么?如果您从控制器传递列表并使用
@model List
,则它将是
@Html.DropDownList(“FooBarDropDown”,model)
@Html.DropDownList("fooBarDropDown", ViewData["list"] as List<SelectListItem>)
public static class DropDownListUtility
{   
    public static IEnumerable<SelectListItem> GetFooBarDropDown(object selectedValue)
    {
        return new List<SelectListItem>
        {
            new SelectListItem{ Text="Option 1", Value = "1", Selected = "1" == selectedValue.ToString()},
            new SelectListItem{ Text="Option 2", Value = "2", Selected = "2" == selectedValue.ToString()},
            new SelectListItem{ Text="Option 3", Value = "3", Selected = "3" == selectedValue.ToString()},
        };             
    }
public ActionResult ExampleView()
{
    var list = DropDownListUtility.GetFooBarDropDown("2"); //select second option by default;
    ViewData["foorBarList"] = list;
    return View();
}
@Html.DropDownList("fooBarDropDown", DropDownListUtility.GetFooBarDropDown("2"))
public static MvcHtmlString DropDownList(
  this HtmlHelper htmlHelper,
  string name,
  IEnumerable<SelectListItem> selectList
)
List<SelectListItem> items = new List<SelectListItem>();
 items.Add(new SelectListItem { Text = "Option1", Value = "Option1"});
 items.Add(new SelectListItem { Text = "Option2", Value = "Option2" });
 items.Add(new SelectListItem { Text = "Option3", Value = "Option3", Selected = true });
@{
    List<SelectListItem> items = ...
}
@Html.DropDownList("FooBarDropDown", items)
@{         
    List<SelectListItem> Listitems = new List<SelectListItem>();
    for(int i = 1; i <= 50; i++)
    {
       items.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
    }
 }

 @Html.DropDownList("ddlSequence", Listitems , new { id = "ddlSequence", @class = "form-control" })