【发布时间】:2015-01-17 02:39:11
【问题描述】:
基本上,我的问题是:我试图在 ASPX 页面上显示 ViewData 变量,但我得到“ViewData 在当前上下文中不存在。”
是什么让我来到这里?我是 MVC 新手,正在学习在线教程。在第 1 课中,他让我们通过转到 Add > View 创建一个视图,这将创建一个 Razor 视图。然后,在下一个教程中,他将教我们使用 ViewData 将变量传递给视图。但是,当他显示它时,他使用的是 方法,这在我的 Razor 页面上不起作用。因此,我尝试通过以传统方式创建 Web 表单,在我的 View 文件夹中创建一个 ASPX 页面。当我这样做时,我得到了上面提到的错误。我已经成功地弄清楚了如何让 Razor 方法在我的 cshtml 页面中工作,但是我应该以“尖括号 - 百分比”的方式来执行它的合适方法是什么?
编辑:基本上,我所做的只是按照以下演练中教程 2 的说明进行操作。他并没有真正解释他是如何创建 ASPX 页面的(或者他根本没有使用 ASPX 页面)。如果有人知道更完整的更好的教程,我会全神贯注。 http://www.codeproject.com/Articles/207797/Learn-MVC-Model-View-Controller-step-by-step-in#Lab1:- 创建一个简单的 hello world ASP.NET MVC 应用程序
Edit2:根据要求,这是我的代码:
ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="MVCLearn.Views.FirstMVC.Index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%= ViewData["vwTest"] %>
</div>
</form>
</body>
</html>
这是我的控制器:
public class FirstMVCController : Controller
{
// GET: FirstMVC
public ActionResult Index()
{
ViewData["vwtest"] = "Something";
return View();
}
public ActionResult SayHello()
{
return View("HelloView");
}
}
【问题讨论】:
-
为什么要使用 ASPX 视图?
-
不要使用 ViewData 使用 ViewModels,你也不需要 使用@asp.net/web-pages/overview/getting-started/…
-
你能分享你的cshtml和aspx代码吗?
-
本教程是两周前创建的?躲开它。它充满了错误。它似乎也是从各种来源复制粘贴在一起的。只需转到asp.net/mvc。
-
同意,这个教程很糟糕。我不知道为什么要混合使用 aspx 和 razor 语法。并且使用 ViewData 而不是 ViewModels 只是该教程中的许多不良做法之一。
标签: c# asp.net-mvc