在 mvc 路由器上显示旧的 aspx 页



有一个项目是这样的:

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

我需要将其更改为:

/node/1
/node/2

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

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

这是我的路由配置:

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.."这样的旧页面?

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

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

ViewBag.Id = id;

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

最新更新