【问题标题】:Showing old aspx pages on mvc router在 mvc 路由器上显示旧的 aspx 页面
【发布时间】:2019-12-29 06:19:31
【问题描述】:

有一个项目是这样的:

/node.aspx?id=1
/node.aspx?id=2

我需要改成:

/node/1
/node/2

我提供了新的 mvc 项目,这是我的控制器:

public ActionResult node(string id)
{
return View("~/node.aspx");
}

这是我的 RouteConfig:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { action = "Index", id = UrlParameter.Optional }
);

这样的代码可以正常工作,但是在添加“id”的情况下,它就不再有效了:

public ActionResult node(string id)
{
return View("~/node.aspx?id=" + id);
}

错误:

未找到视图“/node.aspx?id=2”或其主视图或没有视图 引擎支持搜索到的位置。

有没有办法在路由器上显示“aspx?id..”之类的旧页面?

【问题讨论】:

  • 可以使用一个动作名称node 和一个参数对动作命中请求,您需要检查并返回相应的视图以及项目的完整路径
  • 像 ViewBag.Id = id 一样使用 ViewBag。现在您可以在视图中读取 id 值了。
  • @jishansiddique 你能给我一个样品吗?
  • @RajeshG 哇,太棒了,谢谢!你能把这个作为答案发布吗?也让我知道来自不同 id 的多用户的多请求是否有任何问题,再次感谢。

标签: asp.net asp.net-mvc model-view-controller url-routing actionresult


【解决方案1】:

要将数据从控制器传递到视图,您需要使用 ViewBag。 View 方法只接受文件名或文件路径,不允许查询字符串。

所以要将 id 从控制器传递到视图,您可以使用 ViewBag,如​​下所示。此外,您可以阅读 here 以使用 ViewBag

   ViewBag.Id = id;

此外,ViewBag 的范围在请求上下文中可用,因此多个请求不会有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 2012-01-22
    • 2021-12-15
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    相关资源
    最近更新 更多