加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用razor引擎在mvc4中重写url

发布时间:2020-12-16 06:49:51 所属栏目:asp.Net 来源:网络整理
导读:我想重写以下网址 – HTTP://本地主机:99 /产品/ CategoryLevel类别ID = 65安培;产品名称=维生素? 同 HTTP://本地主机:99 /产品/维生素, (要么) HTTP://本地主机:99 /产品/ CategoryLevel /维生素 (要么) HTTP://本地主机:99 /维生素 (或)如何从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映射到动作,反之亦然.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读