有時我的應用程序生成的,看起來像http://localhost/?Area=
或http://localhost/SomeController?Area=
如何預防?面積=被添加到生成的URL
我目前沒有在這個項目中定義的任何領域的網址,我試圖消除區域註冊從應用程序啓動。
我發現的唯一答案是使用<a href="Url.Action()">
網址。
必須有一個更清潔的方法來消除這種情況。手動從網址中刪除這個似乎提供了完全相同的結果,但我不確定爲什麼這會出現在第一位。
如何使用路由系統解決此問題? 請注意,我使用t4mvc產生actionlinks不是默認 MVC的ActionLink助手
編輯:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
/// <summary>
/// Registers MVC Routing Collection.
/// </summary>
/// <param name="routes">The routes.</param>
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"secstdsrte",
"SecondaryStandards/{standardType}/{sampleid}",
MVC.Reports.SecondaryStandards(),
null,
new { standardType = new SecondaryStandardTypeConstraint()
}
);
routes.MapRoute(
"misaRoute",
"Misa",
MVC.Reports.MISA()
);
routes.MapRoute(
"outfallroute",
"Outfalls/{fromDate}/{toDate}",
MVC.Reports.Outfalls(ApplicationController.DefaultFromDate, ApplicationController.DefaultToDate),
null,
new
{
fromDate = new DateTimeConstraint(),
toDate = new DateTimeConstraint()
}
);
routes.MapRoute(
"offspecRoute",
"Offspec/{fromDate}/{toDate}",
MVC.Reports.OleOffspec(ApplicationController.DefaultFromDate, ApplicationController.DefaultToDate),
null,
new //route constraints
{
fromDate = new DateTimeConstraint(),
toDate = new DateTimeConstraint()
}
);
routes.MapRoute(
"searchRoute",
"Search",
MVC.Reports.Search()
);
routes.MapRoute(
"compareresultsroute",
"compare/{samplePoint}/{analysis}/{fromDate}/{toDate}",
MVC.Reports.CompareResults(null, null, null, ApplicationController.DefaultFromDate, ApplicationController.DefaultToDate),
null,
new
{
samplePoint = new SamplePointExistsConstraint(),
analysis = new AnalysisExistsConstraint(),
fromDate = new DateTimeConstraint(),
toDate = new DateTimeConstraint()
}
);
routes.MapRoute(
"reportsRoute",
"Reports/{samplePoint}/{fromDate}/{toDate}",
MVC.Reports.Results("", ApplicationController.DefaultFromDate, ApplicationController.DefaultToDate),
null,
new //route constraints
{
samplePoint = new SamplePointExistsConstraint(),
fromDate = new DateTimeConstraint(),
toDate = new DateTimeConstraint() }
);
routes.MapRoute(
"railcarsRoute",
"RailCars/{forDate}",
MVC.Reports.RailCars(ApplicationController.DefaultToDate),
null,
new { forDate = new DateTimeConstraint() }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new
{ controller = "Reports", action = "Index", id =UrlParameter.Optional } // Parameter defaults
);
}
/// <summary>
/// Returns boolean value indicating whether the application is currently in debug mode
/// </summary>
public static bool isDebugging
{
get
{
return HttpContext.Current != null && HttpContext.Current.IsDebuggingEnabled;
}
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
你用什麼來生成URL?我從來沒有見過標準的URL助手將一個Area =附加到一個URL。即使你使用區域,你仍然不會得到那樣的URL。區域通常是/ localhost/area/controller/action的形式 – mfanto 2012-03-01 20:50:54
你可以發佈你的路由表和你用來生成url的代碼嗎? – bhamlin 2012-03-01 21:16:52
更新後的路由 – 2012-03-02 05:17:58