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

asp.net – DropDownList对于不选择值的集合

发布时间:2020-12-16 07:39:19 所属栏目:asp.Net 来源:网络整理
导读:我正在使用带有自定义视图模型的强类型视图.此视图模型包含一组书籍. public IListBooks Books { get; private set; } 我也将一个选择列表传递给视图.但是,DropDownListFor帮助程序类不会自动预选图书的默认值. @Html.DropDownListFor(m = Model.Books[i].Au
我正在使用带有自定义视图模型的强类型视图.此视图模型包含一组书籍.

public IList<Books> Books { get; private set; }

我也将一个选择列表传递给视图.但是,DropDownListFor帮助程序类不会自动预选图书的默认值.

@Html.DropDownListFor(m => Model.Books[i].AuthorID,Model.Author as SelectList)

其他一切都有效,例如:它确实将选定的值传递回控制器.

我通过在viewmodel中创建选择列表找到了一种解决方法:

@Html.DropDownListFor(m => Model.Books[i].AuthorID,new SelectList(Model.AuthorList,"Value","Text",@Model.Books[i].AuthorID.ToString()))

但是,如果有一个更简单的解决方案,我不想实现此解决方法.有没有办法让视图可以处理集合中的值?

解决方法

您应该像在解决方法中一样将作者列表作为模型的一部分传递.您可以在控制器中生成选择列表,但不要求在视图中创建列表.就像是:

@Html.DropDownListFor(m => Model.Books[i].AuthorID,Model.AuthorList)

如果您在控制器中创建列表,这将有效:

var model = new ViewModel()
{
    AuthorList = new SelectList(Model.AuthorList,"Text"),};

它将处理自己设置所选项目.

至于为什么你的Model.Author作为SelectList不起作用,我猜测Model.Author不是作者姓名和ID的列表.它可能是一个域对象,并使用as返回null.

(编辑:李大同)

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

    推荐文章
      热点阅读