2012-04-26 65 views
1

我有一个MVC应用程序已经移动到wwwroot中的一个子文件夹,并且这个子文件夹已经通过IIS创建了一个应用程序。因此而URL到我的登录页面看起来像这样前:如何处理使用MVC路由的IIS子应用程序?

www.mydomain.com/login

现在看起来是这样的:

www.mydomain.com/application/登录

该应用程序工作正常,它似乎没有影响路由或我的应用程序中的任何链接。但是,它是造成我在哪里引用图片src的,像这样的问题:

<img src="/content/images/myimage.png"/> 

因为它正试图从URL www.mydomain.com/content/images/myimage.png这显然检索图像返回一个404

在我的Global.asax文件我只使用默认路由,这是我尝试修改考虑的子文件夹作为URL的一部分:

routes.MapRoute("Default", 
       "application/{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 

但是,现在当我试图去到你的根l www.mydomain.com/application我刚刚得到一个目录列表!如果我尝试直接访问控制器,即www.mydomain.com/application/dashboard我得到一个404!

任何人都知道如何通过MVC路由来处理这种情况?

回答

4
  1. 您不需要更改路由。它从入口点到您的应用程序。
  2. 使用@ Url.Content(“〜/ content/images/myimage.png”)。

希望这会有所帮助。

+0

星爷我知道我可以使用Url.Content但我的网站是大,我不想去改变所有的图像参考使用Url.Content! – jcvandan 2012-04-26 09:23:41

+1

你可以创建T4模板来为你更新它们=)http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx – 2012-04-26 09:52:28

+0

很酷并不知道T4模板,听起来很有用我会检查出来 – jcvandan 2012-04-26 10:23:29

0

试试这个...

routes.MapRoute("Application", 
       "application/{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 

routes.MapRoute("Default", 
       "{controller}/{action}/{id}", 
       new { controller = "dashboard", action = "index", id = UrlParameter.Optional }); 
+0

那赢了' t适用于这种情况,因为静态文件不会被路由。它们由StaticFileHandler(IHttpHandler)处理。 – Shelakel 2012-04-27 20:03:32

+0

当我尝试此操作时,即使ActionLink中没有提供路由值,所有剃须刀ActionLink使用都会显示以'Application'开头的锚点网址 – barrypicker 2016-08-09 19:39:28

相关问题