我有一个asp.net Webforms网站,我正在尝试将MVC集成到。我快到了,但我遇到了一些问题。
到目前为止我做了什么:
添加了对以下内容的引用:
更新了根Web.config以在运行时加载三个程序集。
添加了目录:
更新了Global.asax并配置了路由:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
到目前为止一切顺利 我右键单击Controllers文件夹,添加一个“HomeController”,就像这样,运行网站就可以了!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
public class HomeController : Controller
{
public string Index()
{
return "This is my <b>default</b> action...";
}
public string Welcome()
{
return "This is the Welcome action method...";
}
}
现在出现问题:
我更新HomeControler以使用View,就像这样,但它不起作用。
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
为了创建视图,我在“Views”中创建了一个名为“Home”的目录。在“Home”里面我添加了一个新的“空页(Razor v3)”,名为“Index.cshtml”:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>View Template!</p>
第一个问题是这一行:
ViewBag.Title = "Index";
VS表示“当前上下文中不存在名称'ViewBag'
第二个问题是,当我运行网站时,收到以下错误消息:
未找到“索引”视图或其主页。以下地点 被搜查:
〜Views / Home / Index.aspx
〜Views / Home / Index.ascx
〜Views / Shared / Index.aspx
〜Views / Shared / Index.ascx
我知道可以将Webforms网站与MVC页面集成 看起来我的配置是正确的。我可以成功添加一个控制器并获得所需的结果 但是,如何让我的Controller使用View?