English 中文(简体)
MVC-使用Url.Content/Url.Action在URL中应用根目录呈现了两次。
原标题:MVC - Application root appears twice in url using Url.Content/Url.Action

我在同一域名下有几个MVC应用程序,每个应用程序都有自己的目录。

mydomain.com/app1
mydomain.com/app2
etc..

当在根级别使用Url.Content()和Url.Action()时,URL中的"app1"部分会重复出现两次。

// code used to generate the links
<%= Url.Action("tetris", "Apps") %>
Page Url:               mydomain.com/app1/
rendered link (broken): mydomain.com/app1/app1/Apps.aspx/tetris

application root appears twice in the rendered url when at the root directory
Page Url:               mydomain.com/app1/home.aspx/
rendered link (works):  mydomain.com/app1/Apps.aspx/tetris

application root appears once - everything works as expected 

我的路由 - 我正在使用Phil haack博客文章中的路线。

routes.MapRoute(
    "Default",
    "{controller}.aspx/{action}/{id}",
    new { action = "Index", id = "" }
);

routes.MapRoute(
    "Root",
    "",
    new { controller = "Home", action = "Index", id = "" }
);

有什么想法吗?

最佳回答

这是因为应用程序将按照从最内层目录到最外层目录的顺序处理Web.config文件。

你有两个选项来解决这个行为。

  1. 指定你希望路由应用的命名空间,可以在根目录或者子目录中进行。http://msdn.microsoft.com/en-us/library/dd504958.aspx

    routes.MapRoute( "Root", "", new {...}, new[] { "MyNamespace.For.Root" } );

  2. 或者在根目录中使用此链接指定您的子目录作为被忽略的路由。 http://msdn.microsoft.com/en-us/library/dd505203.aspx

    routes.IgnoreRoute("/app1"); routes.IgnoreRoute("/app2");

问题回答

当我遇到这个问题时,是因为有人在控制器上使用了RouteArea ["app1"]属性,但在操作GET["apps1/Detail"]中也包含了它,而不仅仅是GET["Detail"]





相关问题
WebForms and ASP.NET MVC co-existence

I am trying to make a WebForms project and ASP.NET MVC per this question. One of the things I ve done to make that happen is that I added a namespaces node to the WebForms web.config: <pages ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

Create an incremental placeholder in NHaml

What I want to reach is a way to add a script and style placeholder in my master. They will include my initial site.css and jquery.js files. Each haml page or partial can then add their own required ...

asp.net mvc automapper parsing

let s say we have something like this public class Person { public string Name {get; set;} public Country Country {get; set;} } public class PersonViewModel { public Person Person {get; ...

structureMap mocks stub help

I have an BLL that does validation on user input then inserts a parent(PorEO) and then inserts children(PorBoxEO). So there are two calls to the same InsertJCDC. One like this=>InsertJCDC(fakePor)...

ASP.NET MVC: How should it work with subversion?

So, I have an asp.net mvc app that is being worked on by multiple developers in differing capacities. This is our first time working on a mvc app and my first time working with .NET. Our app does not ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

热门标签