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
Asp.net mvc 3 “的默认值是什么?”;optionLabel";HTML下拉列表的名称?_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 3 “的默认值是什么?”;optionLabel";HTML下拉列表的名称?

Asp.net mvc 3 “的默认值是什么?”;optionLabel";HTML下拉列表的名称?,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,因此,如果设置一个下拉列表,其中文本:“人名”(字符串)和值:studentID(int)。在我看来是这样的(假设myDDL是来自放置在viewbag中的代码隐藏的数据) @Html.DropDownList(“myDDL”,(IEnumerable)ViewBag.myDDL, “选择素材”,新词典{ {“类”、“下拉列表”}、{“id”、“myDDL”}) “Select Stuff”是一个显示在下拉列表开头的可选标签,它的值是多少 我喜欢该值,因为如果未选择任何值,则我希望获取所有数据

因此,如果设置一个下拉列表,其中文本:
“人名”(字符串)
和值:
studentID(int)
。在我看来是这样的(假设myDDL是来自放置在viewbag中的代码隐藏的数据)

@Html.DropDownList(“myDDL”,(IEnumerable)ViewBag.myDDL,
“选择素材”,新词典{
{“类”、“下拉列表”}、{“id”、“myDDL”})
“Select Stuff”是一个显示在下拉列表开头的可选标签,它的值是多少

我喜欢该值,因为如果未选择任何值,则我希望获取所有数据


谢谢

它是空的,并且始终是下拉列表的第一个选项,因此请确保在回发操作中将其绑定到不可为空的属性:

<select name="selectedValue">
    <option value="">Select Stuff</option>
    ...
</select>
但真正有意义的是,我建议您摆脱这个
ViewBag
,使用视图模型和此助手的强类型版本:

@model MyViewModel
...
@Html.DropDownListFor(
    x => x.SelectedValue,
    Model.MyDdlItems,
    "Select Stuff", 
    new { @class = "dropdowns", id = "myDDL" }
)

这是空字符串。本报告包括以下内容(我的重点):

选项标签

类型:
System.String

默认项的文本。 此参数可以为null


实际上,您可以尝试将一个伪值添加到下拉列表中的对象列表中,该列表采用inn value=“None”/“select stuff”和id=0。它将帮助您生成一个伪值,用户可以在下拉列表中选择该值,您应该能够在后端代码中处理该值。希望这有帮助

有没有办法给它一个值?@EKet,没有,没有,除非您编写自定义的
DropDownList
helper。内置帮助器使用空字符串作为此选项的默认值,您无法更改此值。这是设计的。事实上,如果按照我的建议使用视图模型,则不需要更改此选项。您的上一个方法将我的视图限制为一种类型,其优点是什么?如果我不想在视图中只使用一个模型,该怎么办。好像你在说我不应该在一个视图中使用两种类型…@EKetm的优点是强大的类型和智能感知。是的,我的意思是,一个视图不应该使用多个类型。这通常是一种设计的味道。如果您想在视图中处理多个类型,您可以简单地将它们作为属性聚合到一个视图模型根中,这就是您的视图的强类型。这导致的ViewBag/ViewData和弱类型是微软MVC团队在其出色的框架中引入的最糟糕的事情。我仍然为这个决定责怪他们。我们在这里看到它的一个表现。。。。。。由于您没有使用强类型帮助程序和视图模型,因此混淆了DropDownList帮助程序的用法,并将其传递给第一个参数和第二个参数的值相同。
@Html.DropDownList(
    "selctedValue",
    (IEnumerable<SelectListItem>)ViewBag.myDDL,
    "Select Stuff", 
    new { @class = "dropdowns", id = "myDDL" }
)
@model MyViewModel
...
@Html.DropDownListFor(
    x => x.SelectedValue,
    Model.MyDdlItems,
    "Select Stuff", 
    new { @class = "dropdowns", id = "myDDL" }
)