在MVC路由器上显示旧的Aspx页面

问题描述 投票:1回答:1

有一个项目,例如:

/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 ..”之类的旧页面吗?

asp.net asp.net-mvc model-view-controller url-routing actionresult
1个回答
1
投票

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

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

   ViewBag.Id = id;

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

© www.soinside.com 2019 - 2024. All rights reserved.