如果viewbag为空,如何将作为列表的viewbag转换为SelectList - null?

时间:2017-10-12 18:58:38

标签: c# asp.net-mvc

我如何处理一个列表的空视图包,它有时可能是空的 - 一个空的?

我收到错误:“无法对空引用执行运行时绑定”。

我有一个MVC应用程序并将一个viewbag(这是一个列表)作为参数传递。

有时它可能是空的。

@Html.PagedListPager(Model, page => Url.Action("Index", new { page, movieGenre = (SelectList)ViewBag.movieGenre, searchString = ViewBag.searchString.toString() }))

3 个答案:

答案 0 :(得分:0)

如果ViewBag为null,您可以从ViewBag中提供默认值 (Viewbag.something ?? 'This is the value if Viewbag.something is null')

答案 1 :(得分:0)

尝试movieGenre = (SelectList)(ViewBag.movieGenre ?? new SelectList),
我目前无法对此进行测试,但我认为它应该可行,请告诉我是否有 使用??称为空合并,在许多情况下都非常方便。

答案 2 :(得分:0)

如果值不存在,您必须首先尝试从viewbag中提取值并将其初始化为空SelectList

请在PagedListPager来电之前的任何地方输入此代码:

@{
    SelectList movieGenre = (ViewBag.movieGenre == null) ? new SelectList(new List<string>()) : ViewBag.movieGenre;
}

然后在渲染调用中使用该实例:

@Html.PagedListPager(Model, page => Url.Action("Index", new { page, movieGenre, searchString = ViewBag.searchString.toString() }))

请注意,您的searchString媒体资源可能存在同样的问题。