【发布时间】:2016-08-27 17:03:11
【问题描述】:
我已经为此苦苦挣扎了很多天。我是 MVC 的新手,我被这些问题困住了。我有一个 mvc 应用程序。以下是我从上一篇文章中了解到的 route.config 文件不正确。我的页面相当简单,没有查询字符串,除了一页。每个页面都是控制器/视图格式。这种配置的正确路由配置是什么。如果有人可以通过一些解释帮助我,那就太好了。当我在 IIS 中部署该应用程序时,我遇到了此路由的问题。 当我在 IIS 中部署并进行浏览时,它直接进入我的登录页面,这很好,但在内部它会进入
http://localhost/Home/accountdetails
而不是去
http://localhost/MyWebsite/Home/accountdetails
因此我收到 404 错误。我不明白如何设置它。此外,我在内容文件夹中的图片也没有显示出来,因为他们指的是
http://localhost/Content/Images/myimage
当他们实际上在下时
http://localhost/MySite/Content/Images/myimage
我该如何纠正这些问题。请在此处提供一些帮助。
这是我的 route.config
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Home",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Login",
id =
UrlParameter.Optional
}
);
routes.MapRoute(
name: "Invoice",
url: "{controller}/{action}/{q}",
defaults: new
{
controller = "Home",
action = "GetInvoice",
id =
UrlParameter.Optional
}
);
routes.MapRoute(
name: "Error",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Error",
id =
UrlParameter.Optional
}
);
routes.MapRoute(
name: "ResetPassword",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "ResetPassword",
id
= UrlParameter.Optional
}
);
routes.MapRoute(
name: "Accounts",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "AccountStatus",
id
= UrlParameter.Optional
}
);
routes.MapRoute(
name: "Register",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Register",
id =
UrlParameter.Optional
}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Login",
id =
UrlParameter.Optional
}
);
}
}
更新
对于图片,我将背景图片设置如下
<div class="bannerOuter" style="background-image: url('../../Content/Images/AccountStatus_cropped-23.jpg');">
但在发布后,当我运行应用程序并按 f12 时,我看到它引用了以下图片的 url 并引发 404 错误。
http://localhost/Content/Images/Accounts_cropped-23.jpg
但如果我更改 url 以添加我在 IIS 中指定的网站名称,我可以浏览到它。
http://localhost/MyWebsite/Content/Images/Accounts_cropped-23.jpg
所以这就是在这种情况下我的图像路径应该是什么的问题。
编辑
@Html.EncodedActionLink(string.Format("{0} Statement", @Convert.ToDateTime(@invoiceItem.InvoiceDate).ToString("MMMM")), "GetInvoice", "Home", new { accountNumber = Model.CustomerModel.AccountNumber, dueDate = (Convert.ToDateTime(invoiceItem.DueDate).ToString("dd-MMM-yyyy")) }, new { target = "_blank", @class = "Link" })
所以这里的网址是
http://localhost/Home/GetInvoice?q=ZDmgxmJVjTEfvmkpyl8GGWP4XHfvR%2fyCFJlJM1s0vKj4J6lYJWyEA4QHBMb7kUJq
怎么改成
http://localhost/MySite/Home/GetInvoice?q=ZDmgxmJVjTEfvmkpyl8GGWP4XHfvR%2fyCFJlJM1s0vKj4J6lYJWyEA4QHBMb7kUJq
【问题讨论】:
-
你所有的路由都有完全相同的 url 模式; “家”路线总是首先匹配,其余的将被完全忽略。根据您的描述,您不需要任何超出“主页”路线的东西。至于超链接和图片,我们需要看看您在视图中是如何引用它们的。
-
谢谢..我按照你的建议做了,看起来没问题..但是图片..请看我的编辑
标签: asp.net-mvc routing