asp.net-mvc – 使用razor引擎在mvc4中重写url
我想重写以下网址 –
HTTP://本地主机:99 /产品/ CategoryLevel类别ID = 65安培;产品名称=维生素? 同 HTTP://本地主机:99 /产品/维生素, (要么) HTTP://本地主机:99 /产品/ CategoryLevel /维生素 (要么) HTTP://本地主机:99 /维生素 (或)如何从URL中删除(或)隐藏查询字符串(显示给用户)? 我尝试使用url重写模块(iis)和asp.net路由并在互联网上搜索解决方案,但我没有找到正确的解决方案,请建议任何解决方案. 解决方法
您必须在所有其他路由映射(路由按顺序评估)之前映射此路由:
routes.MapRoute( name: "Product",// any name meaningful for you is right url: "Product/{productName}",defaults: new { controller = "Product",action = "CategoryLevel" } ); 此路由将捕获所有看起来像这样的URL: http://myserver/Product/X 无论X是什么.如果您这样做,您的操作应如下所示: public ActionResult CategoryLevel(string productName) 注意:参数名称必须与路由映射中的段匹配:productName 因此,每当用户键入: http://myserver/Product/Vitamins 将执行CategoryLevel操作,它将接收带有值“Vitamins”的productName参数 问题是如果你有一个你希望像这样调用的动作列表 http://myserver/Product/List 路由将映射它并将使用productName =“List”调用CategoryLevel操作 为避免这种情况,您可以使用此路线: routes.MapRoute( name: "Product",// any name meaningful for you is right url: "ViewProduct/{productName}",action = "CategoryLevel" } ); 哪个会与其他人不同,任何事情都可以正常工作.特定于此方法的URL将如下所示: http://myserver/ViewProduct/TheProductName 其他路线将按预期工作. 顺便说一句:您应该对产品执行特定操作,例如View,而不是CategoryLevel.所以,路线和动作看起来像这样: routes.MapRoute( name: "ViewProduct",// any name meaningful for you is right url: "ViewProduct/{productName}",action = "View" } ); 产品控制器内部的操作: public ActionResult View(string productName) 该路由既用于将用户键入的URL映射到相应的操作,也用于通过使用某些MVC助手(如Html.ActionLink或Url.Action)生成URL.所以,如果你做这样的事情: Url.Action('View','Product',new {productName = "Vitamins"} ) 你会得到预期的短网址: http://myserver/ViewProduct/Vitamins 即路线图是一个双向地图,可以将URL映射到动作,反之亦然. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC3 Html.HiddenFor(Model => Model.Id)不
- asp.net-mvc-3 – ASP.NET Web API问题 – 授权/认证
- 如何在ASP.NET中处理长时间运行的数据库查询
- asp.net-mvc-3 – asp.net mvc 3抛出异常
- asp.net-mvc – 在Azure中启用自定义错误
- 如何在调用WCF服务之前弹出一个确认对话框?
- asp.net文件上传解决方案(图片上传、单文件上传、多文件上
- asp.net – 增加会话TimeOut
- asp.net – Windows Azure VIP Swap,如何处理自定义web.con
- asp.net-mvc – 企业库日志记录 – 从格式中删除连字符
- 是否可以在ASP.NET中重定向期间设置cookie?
- nuget-package – MvcScaffolding是否通过命令行
- asp.net – 页面控制
- Asp.net成员资格表:aspnet_UsersInRoles未出现在
- asp.net – 静态方法的缺点是什么?
- asp.net – DropDownList SelectedIndex值未在Au
- asp.net – 如何在$.ajax POST(JQuery)中处理单引
- iis – 是否需要serviceAutoStartProvider属性来
- asp.net-core – 哪些版本的Windows Server与.NE
- asp.net-mvc-5 – 更改消息“密码必须至少包含一