asp.net-mvc – 当添加非mvc路由时,Html.ActionLink构造错误的链接
|
我在这里有一个webform和mvc混合的应用程序.我指定路由如下 routes.Add("AspxRoute",new Route("Upload/New",new WebFormRouteHandler<Page>("~/Uploads.aspx")));
routes.MapRoute(
"Default",// Route name
"{controller}/{action}/{id}",// URL with parameters
new { controller = "Home",action = "Index",id = "" } // Parameter defaults
);
因此,“上传/新建”的虚拟路径实际上映射到aspx webform页面. 但我的问题是Html.ActionLink(“测试”,“控制器”,“动作”)现在呈现
看了MVC源代码后,我明白这是因为ActionLink调用了RouteCollection.GetVirtualPath(requestContext,routeName,mergedRouteValues),其中routeName为空.不知何故,这默认使用AspxRoute路由来构建url.我试图在“AspxRoute”之前添加另一条路线,但它似乎总是默认为非mvc路由处理器. 当routeName为null时,RouteCollection.GetVirtualPath如何表现?为什么它对我的情况表现如此? 如何构建正确的URL?我是否需要编写新的Htmlhelper扩展? 干杯 解决方法另一种选择是为WebFormRoute添加自定义约束.例如,您可以创建IRouteConstraint的实现来匹配RouteDirection.IncomingRequest,然后使用它来确保路由被Server-Generated路由(例如ActionLink)忽略,但仍然由客户端生成的请求使用.就像是:public class IncomingOnlyRouteConstraint: IRouteConstraint
{
public bool Match(HttpContextBase httpContext,Route route,string parameterName,RouteValueDictionary values,RouteDirection routeDirection)
{
if (routeDirection == RouteDirection.IncomingRequest)
{
return true;
}
return false;
}
}
然后将约束添加到您的路由: routes.Add("AspxRoute",null,new RouteValueDictionary() { {"WebFormsConstraint",new IncomingOnlyRouteConstraint()} },new WebFormRouteHandler<Page>("~/Uploads.aspx")));
当然,你可能更喜欢添加自己的约束风格,这个限制在实现它的路线上,但它只是一种解决问题的方法的例子. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 在使用Unity容器时为此对象异常定义的无参
- asp.net-mvc-3 – 在MVC3中对Webgrid行进行内联编辑
- 在内联代码ASP.NET中连接两个或多个字符串
- asp.net – .NET中的堆栈溢出将IIS发送到100%的CPU使用率
- asp.net-mvc – RavenDB部署问题
- asp.net – 如何忽略正则表达式的情况?
- asp.net-core – 基于策略的授权可以更加动态吗?
- asp.net-mvc – 带编码文本的MVC3 TextBoxFor
- asp.net-mvc – 当我用fiddler检查时,VS2013 RTM每秒发出一
- asp.net – “连接字符串指定本地Sql Server Express实例”
- asp.net – 如何在Windows Phone中开发Google地图
- asp.net-mvc – 确定是否在布局页面中调用了Rend
- .net – 如何强制硬刷新(ctrl F5)?
- 标签 – 如何使用像asp这样的Razor:Literal?
- asp.net-web-api – 从ASP.NET Web API ASP.NET
- asp.net – IIS 7.5几分钟后,Localhost停止解析
- asp.net-mvc – 将布尔属性编辑器转换为MVC视图中
- ASP.NET学习CORE中使用Cookie身份认证方法
- 如何从ASP.NET应用程序启动/停止Windows服务 –
- 经典ASP和ASP.NET集成
