首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在ASP.NET MVC核心中传递给剃刀视图的空列表会变成null?

在ASP.NET MVC核心中,当将空列表传递给剃刀视图时,它会变成null的原因是因为剃刀视图引擎在处理空列表时的默认行为是将其视为null。

剃刀视图引擎是ASP.NET MVC中常用的视图引擎之一,它使用一种类似于HTML的标记语言来生成动态的Web页面。在剃刀视图中,我们可以使用C#代码来处理和展示数据。

当我们将一个空列表传递给剃刀视图时,剃刀视图引擎会尝试迭代这个列表并生成相应的HTML代码。然而,由于列表为空,没有任何元素可供迭代,因此剃刀视图引擎会将其视为null。

这种行为有时可能会导致一些问题,特别是在视图中需要对空列表进行特殊处理时。为了解决这个问题,我们可以在传递空列表之前,将其转换为一个空的Enumerable对象。这样,剃刀视图引擎就不会将其视为null,而是将其视为一个空的可迭代对象。

例如,我们可以使用以下代码将空列表转换为一个空的Enumerable对象:

代码语言:txt
复制
return View(emptyList ?? Enumerable.Empty<T>());

在上述代码中,emptyList是一个可能为空的列表,我们使用了null合并运算符(??)来检查它是否为null。如果emptyList为空,我们将使用Enumerable.Empty<T>()方法返回一个空的Enumerable对象。

这样,在剃刀视图中,我们就可以正常地处理空列表,而不会出现null的情况。

总结起来,当在ASP.NET MVC核心中传递给剃刀视图的空列表会变成null的原因是剃刀视图引擎在处理空列表时的默认行为。为了避免这个问题,我们可以在传递空列表之前,将其转换为一个空的Enumerable对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Asp.Net MVC4入门指南(5):从控制器访问数据模型

因为您还没有添加任何内容,所以结果是一个空的电影列表。 ? 创建电影 点击Create New链接。输入有关电影的一些详细信息,然后单击Create按钮。 ?...单击Create按钮将使得窗体提交至服务器,同时电影信息也会保存到数据库里,然后您会被重定向到URL/Movies,您可以在列表中看到您刚刚创建的新电影。 ? 创建一些更多的电影数据。...Model对象传递给View视图, 从而您可以在视图里访问传递过来的强类型电影Model。...model声明使得控制器可以将强类型的电影列表Model对象传递给View视图。...现在,您可以在简单列表页面里,来显示数据库里的数据了。在下一次的教程中,我们会继续看看框架自动生成的其它代码。

4.2K50
  • MVC系列之开始

    另外,web form有‘视图状态’这个概念,如果控制不好,每次post后回传不必要的数据,就会浪费资源,如果数据量比较大,还会造成页面阻塞。   ...点击创建新的ASP.NET MVC 4 项目后,会见到模板有6个选项,空模板,基本模板,Internet应用程序,Intranet应用程序,移动应用程序,web api。   ...空模板   这个空模板不算空哈- -!有基本的MVC的文件夹结构、配置文件,还有ASP.NET MVC基本需要的程序集。   ...基本模板     这个模板表明了,创建ASP.NET MVC 所需的最低标准的资源,和空模板比起来,多了两个文件夹,Content和Scripts。   ...web api   web api集成在ASP.NET MVC里,直接可以把ASP.NET MVC当成一个web服务框架来用,特别方便。

    85420

    ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

    他们得到一个电影对象(或对象列表中,如本案例的Index),并把模型数据传递给视图。Create方法传递一个空的影片对象给Create视图。...的SelectList对象在ViewBag作为存储类数据(这样的电影流派),然后在下拉列表框中的数据访问类别,是一个典型的MVC applications的方法。...以上创建搜索方法和视图的示例是为了帮助大家更好的掌握MVC的知识,在进行MVC开发时,开发工具也可以大大帮助提高工具效率。...ASP.NET MVC 5 - 开始MVC 5之旅 2. ASP.NET MVC 5 - 控制器 3. ASP.NET MVC 5 - 视图 4. ...ASP.NET MVC 5 - 将数据从控制器传递给视图 5. ASP.NET MVC 5 - 添加一个模型 6.

    6.7K110

    Asp.net mvc 知多少(五)

    该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。...系列导航 Asp.net mvc 知多少(一) Asp.net mvc 知多少(二) Asp.net mvc 知多少(三) Asp.net mvc 知多少(四) Asp.net mvc 知多少(五) 本节主要讲解几种页面传值方式和...在ASP.NET MVC 中有三种方式从controller传值到view中:ViewData, ViewBag 和 TempData。...不管你是否在session中存储数据,ASP.NET MVC都必须为所有的controller管理 session state,且是耗时的 。...Controller中的action是定义在Controller类中的方法用来执行基于用户请求的操作,并在Model的帮助下将结果传递会View。

    3K60

    ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    ViewState在页面中的传递会造成大量的流量消耗; TIP:有关WebForm的服务器控件和ViewState的详细介绍,不了解的朋友可以阅读另一篇博文《ASP.Net WebForm学习笔记:aspx...四、第一个ASP.Net MVC程序 4.1 新建项目后的文件组织结构   (1)新建一个ASP.Net MVC 4项目,选择“基本”配置与“ASPX”视图引擎(暂时不用Razor引擎)。   ...Shared:例如公用的错误页、列表模板页、表单模板页等等; 4.4 数据传递的桥梁-ViewData与ViewBag   首先,ViewData是一个Key/Value对的字典集合数据结构,用于在Controller...(3)控制器的Action方法执行完成后,返回ViewResult,然后MVC框架在执行ExcuteResult方法时,Controller中的ViewData数据会传递给ViewPage类,其实就是把...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC的路由规则默认又是什么,在哪里设置的呢?

    2K30

    ASP.NET MVC5高级编程——(1)了解MVC模式和第一个MVC程序、认识控制器

    MVC 编程模式 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表)...全局应用程序控制文件 3、MVC中的约定: 视图访问和寻址规则 1)、在控制器中使用View()方法调用视图,返回和“动作方法同名”的视图 2)、寻址规则:View()方法默认从“View文件夹”下寻找和控制器同名的文件夹...文件夹 --> 添加 --> 控制器,选择空类别基架模板: 添加后在Controllers文件夹中会多出文件“StoreController.cs”,并且在文件夹Views下会多出“Store”文件夹,...,该参数的名称为ID,如果操作方法中有名为ID的参数,那么Asp.Net MVC 会自动将这个URL片段作为参数传进来,就是ID的值!...3 ,在MVC中,控制器才是核心,每一个请求都必须通过控制器处理,而且有些请求不需要模型和视图! 控制器就是MVC应用程序中的“指挥员”,它紧密的编排用户、模型对象和视图的交互。

    1.9K20

    ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API

    ASP.NET 5.0 的主要目标之一是统一MVC 和 Web API 框架应用。 接下来几篇文章中您会了解以下内容: ASP.NET MVC 6 中创建简单的web API。...如何从空的项目模板中启动,及添加控件到应用中。 如何配置 ASP.NET 5.0 管道。 在 IIS 外对立部署应用。 本文的目的是从空的项目开始,逐步讲解如何创建应用。...当然,您也可以从“Starter Web” 模板开始,它默认包含了MVC 6、权限、记录等其他模块,同时也内置了有效的控制器和视图在其中。...6 需要的所有依赖项,会自动在启动时调用ConfigureServices 。...5系列教程 (四):向视图中添加服务和发布应用到公有云 ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序

    2.9K60

    ASP.NET MVC 5 - 控制器

    在解决方案资源管理器中,用鼠标右键单击控制器文件夹(Controllers ),然后选择“添加控制器“。 ? 在添加Scaffold对话框,单击MVC5控制器 - 空,然后单击“添加”。 ?...改变您的Welcome 方法来包含两个参数,如下所示。需要注意的是,示例代码使用了C#语言的可选参数功能,numTimes参数在不传值时,默认值为1。...在上面的例子中,控制器一直在做着MVC中“VC”部分的职能:也就是视图和控制器的工作。该控制器直接返回HTML内容。通常情况下,您不会让控制器直接返回HTML,因为这样代码会变得非常的繁琐。...相反,我们通常会使用一个单独的视图模板文件来帮助生成返回的HTML。让我们来看看下面我们如何能做到这一点吧。 控制器是MVC中的重要组成部分,有了本节知识的学习,相信大家会更加深入地理解MVC。...ASP.NET MVC 5 - 将数据从控制器传递给视图 5. ASP.NET MVC 5 - 添加一个模型 6.

    2.6K80

    ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    ViewState在页面中的传递会造成大量的流量消耗; TIP:有关WebForm的服务器控件和ViewState的详细介绍,不了解的朋友可以阅读另一篇博文《ASP.Net WebForm学习笔记:aspx...四、第一个ASP.Net MVC程序 4.1 新建项目后的文件组织结构   (1)新建一个ASP.Net MVC 4项目,选择“基本”配置与“ASPX”视图引擎(暂时不用Razor引擎)。   ...:例如公用的错误页、列表模板页、表单模板页等等; 4.4 数据传递的桥梁-ViewData与ViewBag   首先,ViewData是一个 Key/Value对的字典集合数据结构,用于在...中的ViewData数据会传递给ViewPage类,其实就是 把Controller的ViewData赋值给ViewPage页面的ViewData属性。   ...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC的路由规则默认又是什么,在哪里设置的呢?

    91020

    Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图

    它们获取影片对象 (或对象集合,如Index里的对象集合),并将模型传递给视图。Create方法将一个空的Movie对象传递给创建视图。...在添加视图对话框中,指定你要将Movie对象传递给视图模板作为其模型类。在框架模板列表中,选择列表,然后单击添加....当您单击添加按钮时,创建了Views\Movies\SearchIndex.cshtml视图模板。因为你选中了框架模板的列表,Visual Studio 将自动生成列表视图中的某些默认标记。...以上创建搜索方法和视图的示例是为了帮助大家更好的掌握MVC的知识,在进行MVC开发时,开发工具也可以大大帮助提高工具效率。...使用 ComponentOne Studio ASP.NET MVC 这款轻量级控件,在效率大幅提高的同时,还能满足用户的所有需求。

    4.3K100

    ASP.NET MVC学习笔记06编辑方法和编辑视图

    上一篇中,说到了MVC生成的Index方法,和Details方法,现在来说一下自动生成的方法和视图,应该怎么的来进行编辑。...ASP.NET MVC model binder接收form所post的数据,并转换所接收的 Movie请求数据从而创建一个Movie对象。...如果禁用 JavaScript,则不会有客户端验证,但服务器将检测回传的值是无效的,而且将重新显示 表单中的值与错误消息。在本教程的后面,我们验证更详细的审查。...他们得到一个电影对象(或对象列表中,如本案例的 Index),并把模型数据传递给视图。Create方法传递一个空的影片对象给Create视图。...的SelectList对象在ViewBag作 为存储类数据(这样的电影流派),然后在下拉列表框中的数据访问类别,是一个典型的MVC applications的方法。

    5K50

    ASP.NET MVC学习笔记02控制器和路由

    当我们在VS中创建一个新的 ASP.NET MVC程序,程序将会自动使用默认的路由表。 默认路由表 默认路由表存放在App_Start/RouteConfig.cs 中。 ?...参数的自动装配 再修改一下welcome方法,将num改为id,输入url时,把id写在开头,用“?”分割,传入name。 ? ASP.NET MVC的路由自动匹配了ID这个参数,为什么呢?...看看上图中的 ASP.NET默认路由表,url: "{controller}/{action}/{id}",这一行已经添加了id这个参数,因此ASP.NET MVC会自动为我们匹配ID参数。...在ASP.NET MVC应用程序,通过参数传递路由数据是为更典型的应用(如同上面用 query string传递ID参数)。...在上面的例子中,控制器一直在做着MVC中“VC”部分的职能:也就是视图和控制器的 工作。该控制器直接返回HTML内容。通常情况下,不会让控制器直接返回HTML,因为这样代码会变得非常的繁琐。

    1.5K40

    ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

    一、天降神器“剃须刀” — Razor视图引擎 ? 1.1 千呼万唤始出来的MVC3.0   在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor。...@test.AsInt() } 二、Controller深入详解 2.1 控制器的三个职责    (1)处理跟用户的交互   (2)处理业务逻辑的调用   (3)指定具体的视图显示数据,并且把数据传递给视图...因此,我们既可以在Action中返回视图,还可以返回文件流、重定向、空内容等结果。...三、Routing深入详解   首先,ASP.Net MVC项目是URL请求驱动的,为什么访问localhost/home/index会传递给HomeController中名为index的action(...3.5 URL路由调试   在ASP.Net MVC中,默认是不允许对路由规则进行调试的。但是,我们可以通过使用RouteDebug来辅助进行调试。

    1.8K30

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总

    Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习Asp.net MVC替代WebForms,产生ASP.NET MVC 的需求是什么,只有更好的理解了为什么需要MVC,出于什么目的开发的...为什么会出现ASP.NET平台下的MVC框架?...说明:本文主要讨论了为什么微软如此热衷于丢弃传统的APS.NET Webform而转向ASP.NET MVC,从六个方面列举了为什么MVC会更好一些。...MVC(创建一个任务列表应用程序) - Part.1 Asp.Net MVC(理解模型、视图和控制器) - Part.2 ASP.NET MVC中使用View Model分离领域模型 探秘ASP.NET...5 - 添加一个模型 ASP.NET MVC 5 - 将数据从控制器传递给视图 ASP.NET MVC 5 - 视图 ASP.NET MVC 5 - 控制器 ASP.NET MVC 5 - 开始MVC5

    9.9K81

    SpringBoot 笔记

    对应文件夹下 login.cshtml 默认第一个视图引擎的工作:RazorViewEngine,它维护了一个匹配路由规则的列表 ASP.NET Core 中其实是无需注解路由的,因为这样和Controller...[xxx()] xxxAttribute : Attribute xxxxAttribute 只是约定,不强制,若以 Attribute 结尾,则无需写最后的Attribute,VS会自动识别 若无需传参...A: @Controller 会将方法返回值类型为String 的解析为一个路径(视图路径),这是由于SpringMvc 的原因,(拦截解析为视图路径) 在方法上注解 @ResponseBody 将返回的数据转换成...使用Restful API 风格 其实与 ASP.NET MVC 与 ASP.NET WebAPI 普通 Controller 与 ApiController 的区别 类似 Q: 无法连接数据库 java.sql.SQLException...Cookie 参考: 为什么浏览器在AJAX请求返回后不会设置Cookie?

    1.8K10
    领券