gpt4 book ai didi

asp.net - 如何防止 ?Area= 添加到生成的 URL 中

转载 作者:行者123 更新时间:2023-12-02 16:55:24 24 4
gpt4 key购买 nike

有时我的应用程序会生成类似 http://localhost/?Area= 的 URL或http://localhost/SomeController?Area=

我目前没有在此项目中定义任何区域,并且我已尝试从应用程序启动中删除区域注册。

我找到的唯一答案是使用 <a href="Url.Action()">网址。

必须有一种更干净的方法来删除它。手动从 URL 中删除它似乎提供了完全相同的结果,但我不确定为什么会出现这种情况。

如何使用路由系统解决此问题?请注意,我使用 t4mvc 生成操作链接,而不是默认的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);
}
}

最佳答案

此问题之前已在 T4MVC @Url.Action(MVC.Controller.Action()) Renders "?Area=" Parameter in QueryString 上讨论过.

简而言之,当站点不使用区域时,这是 T4MVC 中的一个错误。您可以通过删除此行(第 303 行附近)来解决此问题:

result.RouteValueDictionary.Add("Area", area ?? "");

关于asp.net - 如何防止 ?Area= 添加到生成的 URL 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com