C# 为什么';";“意见”;作为MVC路由前缀是否正常工作?
我尝试使用属性路由为客户端(特别是AngularJS)模板创建一个通用操作,这样我就不需要为每个视图创建一系列单独的操作 以下是我最初尝试的:C# 为什么';";“意见”;作为MVC路由前缀是否正常工作?,c#,asp.net-mvc-5,attributerouting,C#,Asp.net Mvc 5,Attributerouting,我尝试使用属性路由为客户端(特别是AngularJS)模板创建一个通用操作,这样我就不需要为每个视图创建一系列单独的操作 以下是我最初尝试的: [RoutePrefix("views")] public class ViewsController : Controller { [Route("{area}/{viewName=get}")] public ActionResult Get(string area, string viewName) { re
[RoutePrefix("views")]
public class ViewsController : Controller
{
[Route("{area}/{viewName=get}")]
public ActionResult Get(string area, string viewName)
{
return View("~/app/views/" + area + "/" + viewName + ".cshtml");
}
}
假设我在app/views/home文件夹中有一个“get.cshtml”视图
我注意到以下几点:
- 如果我尝试点击
,它会正常工作/views/home/get
- 如果我尝试点击
,我会得到一个404,并且该方法永远不会执行/views/home
- 如果我将控制器名称更改为
(即,我认为这可能是约定与属性路由之间的冲突)并尝试点击FooController
,我仍然会得到404/views/home
- 如果我删除所有标准路由,并且只使用基于属性的路由,我仍然会得到404。所以这绝对不是冲突
- 如果我将其更改为
并尝试点击[RoutePrefix(“view”)]
,则不会正常工作/view/home
为什么会发生这种情况?这是属性路由中的错误吗?它是MVC路由中的某种特殊关键字还是保留字?它是否与默认的MVC“views”文件夹有关,该文件夹仍然与其web.config等存在?View是表示视图(.aspx/.cshtml)UI元素的关键字。控制器的操作方法将调用View()方法返回UI@malkam:我很清楚,
Controller
类中有一个名为View
的方法。如果没有它,就不可能构建最基本的MVC应用程序。然而,我看不出这在这里有什么关系。我不认为有任何关于它的文档,但视图似乎是某种保留词。它可能与名为Views
的文件夹有关,根据MVC约定,您的应用程序将/Views/Home视为文件夹,将/Views/Home/Get视为控制器中的操作。我当然希望看到这场冲突得到解决。