【问题标题】:Rewrite old .aspx path to new MVC path将旧的 .aspx 路径重写为新的 MVC 路径
【发布时间】:2012-04-05 02:58:23
【问题描述】:

我有一个混合的 aspx/MVC webapp 项目,需要在 MVC 路由中或通过 IIS 重写重写传入的 URL。任何工作。我想不通。

我有以下旧路径:

/Article/Nugget/Article.aspx?articleId=30

我需要将其重写为:

/Article/Nugget/30

问题是 MVC 路由正在作为参数传递的 Article.aspx 中读取,而我在 IIS7 中重写它所做的任何事情都被忽略了。好吧..问题是我不知道:)

【问题讨论】:

    标签: asp.net-mvc iis-7 asp.net-mvc-routing url-rewrite-module


    【解决方案1】:

    尝试类似:

    routes.MapRoute( "Article", "Article.aspx", new { controller = "Article", action = "Nugget"} );

    当然在你的操作方法中有一个名为 articleId 的参数

    public ActionResult Nugget(int articleId) { .. }

    【讨论】:

    • 无论如何不必在 Nugget 签名中使用 articleID?如果可能的话,我宁愿使用 id..
    • 这也打破了 Article/Nugget/50 的路线
    • 如果您的参数名为 articleId,则您在路由中的值应匹配以保持一致性。另一种方法是为 /Article/Nugget/{articleId} 指定一个 MVC 路由,有些人认为应该指定所有路由,而不是一个匹配名为“id”的通用参数的所有路由,我倾向于同意。
    • 实际上这不起作用,因为旧 URL 中的 articleID 没有传递给控制器​​。 /Article/Nugget/Article.aspx?articleId=30 根据上面的路由抛出缺少参数articleID的错误.. dang
    • 我没有关注,这应该可以正常工作。您现在应该有两条路线用于第一篇用于 aspx 的路线和一条专用于控制器/动作的 mvc。 mvc 应该指定 {articleId},而不是 {id} - 你使用什么路由?
    猜你喜欢
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 2014-09-12
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多