有一个项目,例如:
/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 ..”之类的旧页面吗?
要从控制器传递数据以进行查看,您需要使用ViewBag。 View方法将仅接受文件名或文件路径,并且不允许使用查询字符串。
因此,要将ID从控制器传递到视图,您可以使用ViewBag,如下所示。此外,您可以阅读here以使用ViewBag
ViewBag.Id = id;
此外,ViewBag的范围在请求上下文中可用,因此多个请求不会有任何问题。