在 mvc 路由器上显示旧的 aspx 页面
Showing old aspx pages on mvc router
有一个项目是这样的:
/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);
}
错误:
The view '/node.aspx?id=2' or its master was not found or no view
engine supports the searched locations.
有没有办法在路由器上显示像"aspx?id.."这样的旧页面?
要将数据从控制器传递到视图,您需要使用 ViewBag。 View 方法将只接受文件名或文件路径,不允许查询字符串。
因此,要将 id 从控制器传递到视图,您可以使用 ViewBag,如下所示。此外,您可以阅读 here 以使用 ViewBag
ViewBag.Id = id;
此外,ViewBag 的作用域在 Request Context 中可用,因此不会出现多个请求的问题。
有一个项目是这样的:
/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);
}
错误:
The view '/node.aspx?id=2' or its master was not found or no view engine supports the searched locations.
有没有办法在路由器上显示像"aspx?id.."这样的旧页面?
要将数据从控制器传递到视图,您需要使用 ViewBag。 View 方法将只接受文件名或文件路径,不允许查询字符串。
因此,要将 id 从控制器传递到视图,您可以使用 ViewBag,如下所示。此外,您可以阅读 here 以使用 ViewBag
ViewBag.Id = id;
此外,ViewBag 的作用域在 Request Context 中可用,因此不会出现多个请求的问题。