我有一个新的MVC3项目设置,我在控制器中添加了一个名为“area1”的文件夹。
然后我将控制器放在名为abc.cs的文件夹中:
public class abc : Controller
{
//
// GET: /abc/
public ActionResult Index()
{
return Content("abc index");
}
}
public class MyAreaRegistration : AreaRegistration
{
public override string AreaName
{
get { return "My Area"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"abc",
"area1/{controller}/{action}/{id}",
new { controller = "abc", action = "index", id = UrlParameter.Optional }
);
// And so on ...
}
}
现在我去:
/area1/abc/index
我收到错误页面。
The resource cannot be found.
我在RegisterArea方法中放了一个断点,它不会被调用。
我做错了什么?
其他几个问题:
我可以将区域文件夹和控制器代码放在项目的任何位置,还是必须在主控制器文件夹中?
我可以在我的区域文件夹中查看我的观点吗?
答案 0 :(得分:3)
您应该使用的文件夹结构是:
- Project -
Areas
< Area Name >
Controllers
MyController.cs
Models
MyModel.cs
Views
etc.
为什么不直接使用“添加区域”上下文菜单选项?
在回答您关于可以放置代码的位置的问题时,有一定的灵活性,但ASP.NET MVC的许多功能都依赖于约定优于配置。把代码放在MVC想要它的地方,你就会让你变得更容易。
答案 1 :(得分:1)
我不确定你的意思
我在控制器中添加了一个名为“area1”的文件夹。
由于您的控制器是一个类,因此向其添加文件夹是没有意义的。
创建区域的过程如下:
在Visual Studio中,右键单击项目根目录,然后选择Add|Area
输入区域的名称 - Area1
或您拥有的名称。
VS将创建~/areas/area1
,并添加Views,Controllers和Models文件夹。
例如,将IndexController.cs
添加到Areas1 / Controllers文件夹中。
将视图“Index.cshtml”添加到Area1 / Views文件夹
重建解决方案。
在浏览器中打开http://localhosdt/area1/index,您就会看到自己的观点。