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

当前上下文中不存在名称“ViewData”

错误消息“当前上下文中不存在名称'ViewData'”通常出现在ASP.NET MVC项目中,这可能是由于以下原因:

  1. 你可能没有在控制器中设置ViewData。在控制器的动作方法中,你可以设置ViewData,然后在视图中访问它。例如:
代码语言:javascript
复制
public ActionResult Index()
{
    ViewData["Message"] = "Hello, world!";
    return View();
}

然后在视图中:

代码语言:javascript
复制
<p>@ViewData["Message"]</p>
  1. 你可能在一个没有继承自Controller的类中尝试访问ViewData。只有Controller类(或者继承自Controller的类)才有ViewData属性。
  2. 你可能在一个非视图文件中尝试访问ViewData。在ASP.NET MVC中,通常只有视图(.cshtml文件)可以访问ViewData。

如果你在以上情况都没有问题,但是仍然遇到这个错误,那么可能是你的项目存在一些其他问题。你可能需要检查你的项目设置,或者尝试清理并重新构建你的项目。

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

相关·内容

  • ASP.NET MVC的View是如何被呈现出来的?

    如下面的代码片断所示,IViewEngine定义了两个FindView和FindPartialView方法根据指定的Controller上下文、View名称和布局文件名称去获取对应的View和Partial...在默认的Action方法Index中,我们通过ViewEngines的静态只读属性Engines得到一个全局ViewEngine列表,并调用其FindView方法试图去寻找一个根本不存在View(“NonExistentView...如下面的代码片断所示,Controller具有如下一系列View方法帮助我们根据指定的View名称、View对象、布局文件名称和Model对象创建相应的ViewResult。...如下面的代码片断所示,如果View属性为Null,会调用FindView方法得到一个用于封装指定名称(如果没有执行则采用当前的Action名称作为View名称)的View的ViewEngineResult...然后创建View上下文,并将该上下文和当前HttpResponse的Output属性代表的TextWriter对象作为参数调用View对象的Render方法实现对View的最终呈现。

    1K80

    ASP.NET MVC5高级编程——(2)MVC模式的视图

    但要注意这里需要输入模型类型的完全限定类型名(名称空间和类型名称),如下所示:1 @model IEnumerable 2 ...ViewBag是ViewData的动态封装器。...一般来说,大部分代码使用ViewBag(传递少量简单类型数据),而不是ViewData,这两种语法并不存在技术上的差异,仅仅是因为ViewBag相对于字典语法而言看上去好看。...View name:当从一个操作方法的上下文中打开这个对话框时,视图的名称默认被填充为操作方法的名称。视图的名称是必须有的。 Template:一旦选择一个模型类型,就可以选择一个基架模版。...示例使用jQuery将一个部分视图的内容加载到一个使用了Ajax调用的当前视图中: 1 2 @section scripts{ 3 <script type

    2.9K10

    ASP.NET MVC Controller激活系统详解:总体设计

    当一个Controller对象被激活之后,核心的操作就是根据请求上下文解析出目标Action方法,并通过Model绑定机制从请求上下文中提取相应的数据映射为方法的参数并最终执行Action方法。...其中TemplateData和ViewData具有基于字典的数据结构,Key和Value分别表示变量的名称和值,所不同的前者用于存储基于当前HTTP上下文的变量(在完成当前请求后,存储的数据会被回收)。...当ControllerBase的Execute方法被执行的时候,它会根据传入的ReuqestContext创建ControllerContext对象,而后续的操作可以看成是在该上下文中进行。...具体来说,如果该值为True或者不存在,则先通过当前ControllerBuilder的命名空间解析,如果失败则忽略命名空间直接采用类型名称进行匹配;否则直接因找不到匹配的Controller而抛出异常...如下面的代码片断所示,MvcHandler具有一个表示当前请求上下文的RequestContext属性,该属性在构造函数中被初始化。

    1.7K60

    ASP.NET MVC5高级编程——(2)MVC模式的视图与Razor引擎

    但要注意这里需要输入模型类型的完全限定类型名(名称空间和类型名称),如下所示:1 @model IEnumerable 2 ...ViewBag是ViewData的动态封装器。...一般来说,大部分代码使用ViewBag(传递少量简单类型数据),而不是ViewData,这两种语法并不存在技术上的差异,仅仅是因为ViewBag相对于字典语法而言看上去好看。...View name:当从一个操作方法的上下文中打开这个对话框时,视图的名称默认被填充为操作方法的名称。视图的名称是必须有的。 Template:一旦选择一个模型类型,就可以选择一个基架模版。...示例使用jQuery将一个部分视图的内容加载到一个使用了Ajax调用的当前视图中: 1 2 @section scripts{ 3 <script type

    3.6K50

    HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 六)

    @StorageProp 在上文中已经提到,如果要建立AppStorage和自定义组件的联系,需要使用@StorageProp和@StorageLink装饰器。...被装饰变量的初始值 必须指定,如果AppStorage实例中不存在属性,则作为初始化默认值,并存入AppStorage中。...当前@StorageProp(key)单向绑定的数据会被修改,即仅限于当前组件的私有成员变量改变,其他的绑定该key的数据不会同步改变。...被装饰变量的初始值 必须指定,如果AppStorage实例中不存在属性,则作为初始化默认值,并存入AppStorage中。 变量的传递/访问规则说明 传递/访问 说明 从父节点初始化和更新 禁止。...> = [new ViewData('flower', $r('app.media.icon')), new ViewData('OMG', $r('app.media.icon')), new ViewData

    37020

    MVC3教程之新手入门

    step1.新建MVC3项目 打开新建项目窗口,在“已安装的模板”列表中选择“Web”,在右侧应用程序模板列表中选择“ASP.NET MVC3 Web应用程序”,修改项目名称为“MVCHelloworld...在打开的添加控制器窗口中,修改控制器的名称为“HomeController”,模板为“空控制器”,如下图,点击“添加”按钮完成添加。 ?   ...public ActionResult Welcome() { return View(); } 在Welcome方法的代码块中,点击右键,在上下文菜单中选择...你不需要通过类来定义任何强类型的属性,因为这是动态属性,在内部,ViewBag 属性以名-值对的形式保存在 ViewData 字典中。... ViewBag.Title是用来显示当前页面的标题的。 ViewBag.name使我们在控制器中添加的属性,在这里可以直接使用。

    1.5K20

    GridView数据库分页+自定义分页导航(二):自定义分页导航。首页、上一页、下一页、尾页和跳转

    或是复制下面代码,到GridView的 后面,这个代码里有第一页和最后一页禁用的出来, 当前第:...} set { ViewState["PageCount"] = value ; } } /// /// 当前页索引...现在,我们试着将上一页和下一页的功能完善,在首页和上下页等控件上加上:onClick="Page_OnClick"(这里一定要加),然后CommandArgument="Next",在Page_OnClick...事件中,我们来判断CommandArgument的值,PageIndex是当前页面,PageCount是总页码,当点击页面上的上一页或下一页,就会进入这个方法,然后页面加或减,再绑定数据, protected...Convert.ToInt32(((DropDownList)codeTable.BottomPagerRow.FindControl("pageList")).SelectedValue); 到这里已完成上下页和首页等的切换

    1.7K10

    .NET Core项目部署到Windows系统Docker

    dockerdemo.dll"] 设置dockerfile文件属性 -【复制到输出目录】:始终复制 4、更改下主页文件(Index.cshtml)显示(此步骤可忽略,纯属作者测试显摆) @{ ViewData...参数分解: -t ---指定镜像名称 命令结尾处 ....---表示build上下文为当前目录,默认情况下docker会使用在上下文的根目录下找到Dockerfile文件 如上图即创建成功 9、可以通过命令或直接在Docker Desktop上看到刚创建成功的镜像...10、 绑定端口、创建并启动查看容器 docker run --name=dockerdemo -p 2022:80 -d dockerdemoimg 参数说明 --name 指定容器的名称...当然可以不指定,默认会为我们创建 -p 外部端口与内部容器端口映射 -d 表示在后台以守护态(daemonized)形式运行容器 最后一个参数 dockerdemoimg 就是我们刚创建的镜像名称 11

    20710

    程序员轻松学PHP,将混乱思维拨乱反正的3种方法

    (include将文件包含进来并且执行,如文件不存在,就抛出一个警告,但不中断PHP代码的运行。   (include_once和include一样,唯一的区别就是先检查是否已经包含该文件。   ...(require和include一样,唯一的区别就是文件不存在会中断PHP代码的运行。   ...(require_once和include_once一样,唯一的区别就是文件不存在会中断PHP代码的运行。   ...$viewData[$curMonth]['income']=0;   22. } else {   23. $viewData[$curMonth]['consume']=0;   24....同样,商品内容和名称、用户名称等都存在这个问题,于是我们不得不增加一个专门审核各种内容的角色。   如图1-5所示,为了对各种内容进行审核,我们增加了审核人这样一个角色。 ?

    1K30
    领券