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

asp.net – 编辑不适用于Html.DropDownList和@class属性

发布时间:2020-12-16 06:46:30 所属栏目:asp.Net 来源:网络整理
导读:控制器: ViewBag.Category = new SelectList(this.service.GetAllCategories(),product.Category); 我没有使用Id Name. GetAllCategories()只返回几个int数. 当我在视图中使用时: @Html.DropDownList("Category",String.Empty) 一切正常.编辑正常,DropDown
控制器:

ViewBag.Category = new SelectList(this.service.GetAllCategories(),product.Category);

我没有使用Id Name. GetAllCategories()只返回几个int数.

当我在视图中使用时:

@Html.DropDownList("Category",String.Empty)

一切正常.编辑正常,DropDownList显示所选值.
HTML结果:

<select id="Category" name="Category">
<option value=""></option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option selected="selected">5</option>
...
</select>

但我需要使用css @class,所以我使用这段代码:

@Html.DropDownList("Category",(IEnumerable<SelectListItem>)ViewBag.Category,new { @class = "anything" })

HTML结果:

<select class="anything" id="Category" name="Category">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
...
</select>

不幸的是,编辑仍然有效(我可以保存我选择的值),但DropDownList开始显示默认值而不是数据库中保存的值.

你有什么想法会有什么问题吗?

更新
我做了更新更准确.

GetAllCategories方法如下所示:

public List<int> GetAllCategories()
        {
            List<int> categories = new List<int>() { 1,2,3,4,5,6,7,8,9,10,11,12 };

            return categories;
        }

解决方法

Html.DropDownList非常有趣:
?如果您没有提供选择列表

@Html.DropDownList("Category",String.Empty)

它将根据提供的属性名称从ViewData / ViewBag中查找选择的值:Category.
但是,如果您提供选择列表,它将根据提供的属性名称类别在ViewData / ViewBag中查找默认选定项目,该类别当然将包含列表而不是默认值.要解决此问题,您有两种选择:

不提供选择列表:

@ Html.DropDownList(“Category”,null,new {@class =“anything”})

要么
使用其他名称而不是ViewBag属性名称类别:

@ Html.DropDownList(“CategoryDD”,(IEnumerable< SelectListItem>)ViewBag.Category,new {@class =“anything”})

(编辑:李大同)

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

    推荐文章
      热点阅读