在另一个Controller MVC的查询字符串中调用Controller

时间:2015-07-09 06:39:05

标签: c# asp.net-mvc-4 razor

我的应用程序已经有一个用于微调器的公共控制器,它又调用构成查询字符串一部分的其他控制器。

SpinnerController:

{{ macro_function(**locals) }}

Spinner视图

public ActionResult Index() { return View();} 

现在,我的家庭控制器:

<html>
    <body onload="JsHelpers.ShowSpinner('Page loading, please wait...'); window.location=JsHelpers.GetUrlParameter('page');"></body>
</html>

我设计了一个母版页,其中包含通过SpinnerController调用我的HomeController的链接,因为我需要保持旧流程。

例如:要调用HomeController,

public ActionResult Index() { /*my code goes here*/ return View()}

这为我提供了网址:@Url.Action("Index","Spinner", new {page ="home"}) ,我在localhost/Spinner?page=home page之后通过QueryString识别控制器路径_Layout.cshtml并相应地重定向(在这种情况下, HomeController中)

现在,当我需要将输入发送到我想要调用的另一个控制器时,我的问题出现了。

考虑一下,StudentController

Request.QueryString["page"]

我需要网址格式为Public ActionResult Index(int id) { /*my code goes here*/ return View()} 。 我使用了localhost/Spinner?page=Student?id=2以及其他方法,这些方法我都知道并且无法生成上述格式的网址,因此在过去的几天内就被这个方法所取代。

所以,

  1. 是否可以按上述格式生成网址?
  2. 如果是,是否是实现目标的正确方法,是否有更好的方法?
  3. 任何建议/建议/帮助将不胜感激。

    提前致谢。

1 个答案:

答案 0 :(得分:-1)

我建议您添加一条新路线并将其放在App_Start文件夹的路线配置顶部,如下所示:

routes.MapRoute( "spinner", "Spinner/Index/{page}/{parm1}/{parm2}", new { action = "Index", controller = "Spinner" } );

然后你可以在你的行动中获得参数:

public ActionResult Index(string page, string parm1, string parm2) {...}

public ActionResult Index(string page, string parm1, string parm2) {...}