asp.net mvc将一个变量传递给另一个带有表单帖子的动作方法

时间:2010-03-23 16:45:39

标签: c# asp.net-mvc

我有一个页面。 (动作)和一个名为Widget的控制器。我作为一个字符串在客户端传递。

我希望能够将客户端从一个页面传递到另一个页面,以及发布的其他字段。

我在下面做错了什么?客户端即将出现

例如:Widet / Page2 / clientABC

        public ActionResult Page2(string client)
        {

            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Page2(string client, string sector)
        {
            return RedirectToAction("Page3", new { client = client, sector = sector });
        }

        public ActionResult Page3(string client, string sector)
        {
            return View();
        }

2 个答案:

答案 0 :(得分:0)

这有用吗?

Widet/Page2?client=clientABC&sector=123

由于你有一个包含多个参数的动作,我认为你需要在查询字符串中命名它们。这就是我做到的。除非操作只有一个参数,否则默认路由不会处理您尝试调用它的方式。

查看您的Global.asax.cs文件以查看路由配置。

如果它看起来像这样:

    public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

        routes.MapRoute(
          "Root",
          "",
          new { controller = "Home", action = "Index", id = "" }
        );
    }

你可以摆弄它并使其支持多个参数:

{controller}/{action}/{param1}/{param2}

虽然我只是在查询字符串中使用命名参数。

答案 1 :(得分:0)

如果我理解这一点,那么您的问题就是您不会将客户端发布到“Page2”操作中。您可以将其作为post参数(例如在隐藏字段中)或在url(在表单标记的操作中)发布。我的猜测是你想要它在你的网址中。

如果您使用表单html帮助程序,则可以像这样使用它:

<%using(Html.BeginForm("Page2", "Home", new { client = "clientABC" })) { } %>