Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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# ASP.Net MVC@Url.Action()路由到错误的控制器_C#_Asp.net_Asp.net Mvc_Visual Studio 2012_Asp.net Mvc 5 - Fatal编程技术网

C# ASP.Net MVC@Url.Action()路由到错误的控制器

C# ASP.Net MVC@Url.Action()路由到错误的控制器,c#,asp.net,asp.net-mvc,visual-studio-2012,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Visual Studio 2012,Asp.net Mvc 5,我是MVC的新手。我可以将MVC 5.2集成到现有的web窗体Visual Studio 2012 Update 4项目中。我创建了我的第一个控制器,所有这些都按预期工作。甚至在访问MVC视图时,我也能够利用现有项目中的windows窗体身份验证。但当我创建第二个控制器时,它开始出错 这是我的路线图: public static class RouteConfig { public static void RegisterRoutes(RouteCollection routes)

我是MVC的新手。我可以将MVC 5.2集成到现有的web窗体Visual Studio 2012 Update 4项目中。我创建了我的第一个控制器,所有这些都按预期工作。甚至在访问MVC视图时,我也能够利用现有项目中的windows窗体身份验证。但当我创建第二个控制器时,它开始出错

这是我的路线图:

public static class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.EnableFriendlyUrls();

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
我有两个控制器都位于~/控制器中。我的第一个控制器是:

public class HomeController : Controller
{
    //
    // GET: /Home/
    public ActionResult Index()
    {
        //return View();
        return Redirect("~/Default.aspx");
    }

    public ActionResult CloseSession()
    {
        return Redirect("http://www.yahoo.com");
    }
}
第二控制器:

public class CajaWebController : Controller
{
    //
    // GET: /CajaWeb/
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult CloseSession()
    {
        return Redirect("http://www.cnn.com");
    }
}
我不知道这是否与问题有关,但我将介绍如何达到MVC视图。我的VS2012开始url是

http://localhost/Fortia/CajaWeb. 
Fortia是我的应用程序名。因为我声明了Web表单身份验证和

<location path="CajaWeb">
  <system.web>
    <authorization>
      <allow roles="Fortia" />
      <deny users="*" />
    </authorization>
  </system.web>
</location>
调用的视图包含以下代码:

<a href='@Url.Action("CloseSession", "CajaWeb")'>Close session</a>
但结果是一样的


怎么了?

我想问题是路线不对

http://localhost/Fortia/CajaWeb

不匹配任何路由,因此它最终将转到RouteConfig中指定的默认路由。您需要在应用程序中配置路由或创建一个名为“Fortia”的区域。

您使用的似乎正在干扰MVC生成的URL


如果没有,那么就这样吧,因为当控制器和动作名称对其内容有意义时,MVC的URL已经非常SEO友好了

与论坛网站不同,我们不使用“感谢”或“感谢任何帮助”或签名。请参阅“.也许您似乎用于WebForms的软件包与MVC不兼容?新证据!此代码有效:
@Html.RouteLink(“要在页面上显示的链接文本”,“默认”,NEW System.Web.Routing.RouteValueDictionary(NEW{controller=“CajaWeb”,action=“CloseSession”,foo=“A”,bar=“B”}))
那么为什么其他人没有呢?可能是@CodeCaster的路径正确。
@Html.RouteLink
生成了
,没有“友好的URL”“…我无法卸载友好URL包,因为我正在更新的应用程序是WebForms,并且严重依赖于此包。我只是想给它添加MVC支持。因此,我将看看如何适应它。但这将是另一个问题
<a href='@Url.Action("CloseSession", "CajaWeb")'>Close session</a>
<a href='/Fortia/__FriendlyUrls_SwitchView?action=CloseSession&amp;controller=CajaWeb'>
http://localhost/Fortia/__FriendlyUrls_SwitchView?action=CloseSession&controller=CajaWeb