【问题标题】:How do I route a webforms page in ASP.NET MVC?如何在 ASP.NET MVC 中路由 Web 表单页面?
【发布时间】:2011-03-25 16:04:11
【问题描述】:

我有一个 MVC 页面,它有一个需要呈现的 webforms 页面:

webforms 页面的虚拟目录是:

http://mysite/Report/1

文件已保存:

~/Areas/Accounts/Views/Invoices/Report.aspx?id=1

如何映射?

我已将其映射到控制器:

return Redirect("~/Areas/Accounts/Views/Invoices/Report.aspx?id=1?id=" + id);

但我得到一个错误。

【问题讨论】:

  • 如果这是 MVC,那么您将路由到控制器,而不是视图,并且控制器处理查询字符串参数而不是您的视图。但是,默认路由是 /Controller/Action/Params,所以你需要一个自定义路由来允许 /Controller/Id
  • 乔治,我可以在星期一告诉你
  • George,最后我确实从根位置实现了这个,这很有效。 (抱歉不能给出错误)您的解决方案也将按照您在下面发布的那样工作,所以我接受答案,谢谢

标签: c# asp.net asp.net-mvc asp.net-mvc-2 webforms


【解决方案1】:

您想使用MapPageRoute() 方法将内容发送到特定页面:

routes.MapPageRoute(
 "ReportRoute",
 "Report/{id}",
 "~/Areas/Accounts/Views/Invoices/Report.aspx?id={id}"   
 );

【讨论】:

  • +1 比我更好的答案。 :) id 的正则表达式不应该是字符串吗?
  • 这可能是解决方案,我会在星期一早上立即尝试,并会告诉你它是如何工作的。
【解决方案2】:

从你的表达方式来看,你可能不清楚自己在做什么。

  1. 在此文件夹中添加一个控制器(来自 Visual Studio):~/Areas/Accounts/Controllers/Report

    您的ReportController 类中可能有一个方法display(int id)。然后默认情况下,您的 URl 将如下所示:

    http://mysite/Report/display/1
    
  2. 要对其进行自定义,请将其添加到 Global.asax.cs 中:

    routes.MapRoute(
    "NewRoute", // Route name
    "report/{id}", // URL with parameters
     new { controller = "report", action = "display", // Parameter defaults
     id = UrlParameter.Optional }
    );
    

【讨论】:

  • ASP.NET MVC 可以有 URL 参数,在某些情况下它应该有(比如搜索中的多个查询项);在他的特殊情况下,这可能是因为他还没有将其映射到路线。
  • @George 抱歉。对,我知道。正在想一个更好的表达方式。 OP 对我的问题似乎很困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多