加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – DropDownListFor始终选择项值0

发布时间:2020-12-16 01:56:42 所属栏目:百科 来源:网络整理
导读:我有一个问题,让asp.net和剃刀引擎创建一个选择了正确元素的下拉列表.无论我尝试什么,如果其中一个值为“0”,将始终选择该项目. 我想要创建的是选择从-2到2的评级,0是中间值,但不应该预先选择.应强制用户做出决定,因此defualt值应为空. 使用选项标签创建下拉
我有一个问题,让asp.net和剃刀引擎创建一个选择了正确元素的下拉列表.无论我尝试什么,如果其中一个值为“0”,将始终选择该项目.

我想要创建的是选择从-2到2的评级,0是中间值,但不应该预先选择.应强制用户做出决定,因此defualt值应为空.

使用选项标签创建下拉列表,如下面的代码所示,不会将默认值保留为空.例如,如果值为1-5,则这将起作用.

@Html.DropDownListFor(model => model.Rating,new SelectList(new List<SelectListItem>()
{
    new SelectListItem() {Text = "-2",Value = "-2"},new SelectListItem() {Text = "-1",Value = "-1"},new SelectListItem() {Text = "0",Value = "0"},new SelectListItem() {Text = "1",Value = "1"},new SelectListItem() {Text = "2",Value = "2"}
},"Value","Text"),String.Empty,new { @class = "rating-select" })

上面的代码将选定的标签添加到0项并创建以下html:

<select class="rating-select valid" data-val="true" data-val-number="The field Rating must be a number." data-val-required="Rating is required." id="Rating" name="Rating">
    <option value=""></option>
    <option value="-2">-2</option>
    <option value="-1">-1</option>
    <option selected="selected" value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
</select>

我已经尝试过选择空白值的所有版本,但所有版本都相同;使用选定的标签生成0项.

使用Selected = true创建空白项目

@Html.DropDownListFor(model => model.Rating,new SelectList(new List<SelectListItem>()
{
    new SelectListItem() {Text = "Null",Value = "",Selected = True},new SelectListItem() {Text = "-2",new { @class = "rating-select" })

创建空白项目对象并将对象设置为选择列表中的选定对象

@{SelectListItem blankItem = new SelectListItem() {Text = "Null",Value = ""}}
@Html.DropDownListFor(model => model.Rating,new SelectList(new List<SelectListItem>()
{
    blankItem,"Text",blankItem),new { @class = "rating-select" })

当其中一个值为0时,以上都不起作用.

有没有人知道一个正确的解决方案,或者这是否是框架中的错误?

我可以通过解决方法来解决它,但我宁愿不……

解决方法

我会看看model.Rating属性是什么类型,我假设它是一个int.如果这是一个(int)类型而你没有提供一个值,那么当它遇到一个视图时它将被绑定为0.因此,处理视图时,0将被标记为已选择,即视图引擎认为正确的值,并将覆盖您手动选择的选定值.尝试制作model.Rating属性是一个可以为空的int(int?),看看你是否有同样的问题.

其次,你总是可以查看一个快速的jQuery函数来将下拉列表重置为第一个提供的值,但这可能比你想要的更“hacky”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读