有一个项目是这样的:
/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 的范围在请求上下文中可用,因此多个请求不会出现任何问题。