Html 为什么我的“是/否”下拉列表总是显示“是”?

Html 为什么我的“是/否”下拉列表总是显示“是”?,html,razor,html-select,Html,Razor,Html Select,我有一个“是/否”下拉列表,声明如下: @Html.DropDownListFor(model => Model.Items[i].ITEM_PAYS, Model.YesNoSelectList, new { @class = "allow-edit" }) <select class="allow-edit" id="Items_0__ITEM_PAYS" name="Items[0].ITEM_PAYS"> <option value="True">

我有一个“是/否”下拉列表,声明如下:

@Html.DropDownListFor(model => Model.Items[i].ITEM_PAYS, Model.YesNoSelectList, new { @class = "allow-edit" })
<select class="allow-edit" id="Items_0__ITEM_PAYS" name="Items[0].ITEM_PAYS">
    <option value="True">Yes</option>
    <option value="False">No</option>
</select>
其中,
Model.YesNoSelectList
在my
BoqReviewViewModel
类中设置如下:

public BoqReviewViewModel()
{
    YesNoSelectList = new SelectList(new[]
        {
            new {Text = "Yes", Value = true},
            new {Text = "No", Value = false},
        },
        "Value",  "Text");
}
public SelectList YesNoSelectList { get; set; }
这将导致元素呈现如下所示:

@Html.DropDownListFor(model => Model.Items[i].ITEM_PAYS, Model.YesNoSelectList, new { @class = "allow-edit" })
<select class="allow-edit" id="Items_0__ITEM_PAYS" name="Items[0].ITEM_PAYS">
    <option value="True">Yes</option>
    <option value="False">No</option>
</select>

对
不

然而,即使当
选择的model属性为
时,即
model.Items[i].ITEM\u
false
,下拉列表仍会显示
Yes

,您应该在Razor标记中创建
选择列表
,以便在那里设置所选值


按照现在的方式,Html帮助程序不会选择任何内容,并将第一个选项呈现为预选选项。

您应该在Razor标记中创建
SelectList
,以便在其中设置所选值


按照现在的方式,Html助手不会选择任何内容,而是将第一个选项作为预选选项呈现。

因此,您的代码将以您显示列表的方式呈现列表。如果我错了,请纠正我,但html中没有选择是或否。它渲染它们并基本上选择第一个是的。如果您想要“请选择”之类的选项,您应该生成另一个在加载时同时被选中和禁用的选项,否则它会在默认情况下选择“是”,因为它是第一个选项。请选中此项。“是”是预选的,因为您事先没有渲染某些内容。总之,您的代码并不决定选择什么。它只是渲染。@Jabberwocky我一直理解
@Html.DropDownFor
要正确渲染和设置值,在我使用它之前总是这样。我没有简单地为
select
编码显示的HTML,它是由
@HTML.DropDownFor
呈现的,据我所知,它应该设置模型值。你检查过这个吗?你是对的,它应该发送一个值,但我不认为你实际上在任何地方设置了一个值。这就是它预选的原因Yes@Jabberwocky谢谢你的帮助。我发现,如果我在Razor标记中创建
选择列表
,我可以在那里设置所选值,而且似乎效果很好。为什么不建议将其作为答案,如您上一个问题链接中所示,我将接受。因此,您那里的代码将以您显示列表的方式呈现列表。如果我错了,请纠正我,但html中没有选择是或否。它渲染它们并基本上选择第一个是的。如果您想要“请选择”之类的选项,您应该生成另一个在加载时同时被选中和禁用的选项,否则它会在默认情况下选择“是”,因为它是第一个选项。请选中此项。“是”是预选的,因为您事先没有渲染某些内容。总之,您的代码并不决定选择什么。它只是渲染。@Jabberwocky我一直理解
@Html.DropDownFor
要正确渲染和设置值,在我使用它之前总是这样。我没有简单地为
select
编码显示的HTML,它是由
@HTML.DropDownFor
呈现的,据我所知,它应该设置模型值。你检查过这个吗?你是对的,它应该发送一个值,但我不认为你实际上在任何地方设置了一个值。这就是它预选的原因Yes@Jabberwocky谢谢你的帮助。我发现,如果我在Razor标记中创建
选择列表
,我可以在那里设置所选值,而且效果似乎很好。为什么不建议将其作为答案,如您上一个问题链接中所示,我将接受。