当前上下文中不存在名称为“ViewData”的变量

5

我正在使用MVC3开发我的第一个应用程序,但对它还是新手:
我试图在母版页中成功传递我的ViewData[],因为它包含一个将在每个页面中使用的消息,但是当我尝试访问它时,会出现以下错误信息:

CS0103: 当前上下文中不存在名称为 'ViewData' 的变量

var msg = ViewData["msg"] as string;
        //var msg = ViewBag.msg as string;
        if (msg != null)
        {
            Response.Write (msg);
        } else if (msg == null)
        {
            Response.Write("");
        }

我不确定是我做错了什么还是在我的MasterPage上无法访问ViewData[]。请帮忙!


顺便说一下,您不需要进行if检查; Response.Write(null)不会有任何作用。 - SLaks
1
好的,但是我该如何检查ViewData中是否有一些消息?如果有的话,就打印出来吗? - user971741
你不需要检查。如果你打印了一个不存在的消息,什么也不会发生。 - SLaks
1
好的,谢谢! :) 但我认为我仍然会使用if语句,因为我正在将消息显示在一个div中,只有当有消息时才会显示,否则它将被隐藏...所以我需要检查是否有消息! - user971741
1个回答

3

您需要将您的主页设置为继承 System.Web.Mvc.ViewMasterPage


2
不要再使用 Response.Write。 :) - bzlm
它当前由“myweb.Views.myweb”在主指令中继承.. 应该替换它吗? <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="myweb.master.cs" Inherits="myweb.Views.myweb" %> - user971741
1
在ASP.Net MVC中,您不应使用WebForms代码后台文件。将其更改为<%@ Master Language="C#" Inherits="ViewMasterPage" %> - SLaks
好的,它刚开始给我这个错误: “类型'System.Web.Mvc.ViewMasterPage'不明确:......” - user971741
你可能引用了两个版本的 System.Web.Mvc.dll。请删除其中一个(检查两个 Web.config 文件)。阅读完整的消息以获取更多详细信息。 - SLaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接