Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么';";“意见”;作为MVC路由前缀是否正常工作?_C#_Asp.net Mvc 5_Attributerouting - Fatal编程技术网

C# 为什么';";“意见”;作为MVC路由前缀是否正常工作?

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

我尝试使用属性路由为客户端(特别是AngularJS)模板创建一个通用操作,这样我就不需要为每个视图创建一系列单独的操作

以下是我最初尝试的:

[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
    ,它会正常工作
  • 如果我尝试点击
    /views/home
    ,我会得到一个404,并且该方法永远不会执行
  • 如果我将控制器名称更改为
    FooController
    (即,我认为这可能是约定与属性路由之间的冲突)并尝试点击
    /views/home
    ,我仍然会得到404
  • 如果我删除所有标准路由,并且只使用基于属性的路由,我仍然会得到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视为控制器中的操作。我当然希望看到这场冲突得到解决。