asp.net mvc передает переменную другому методу действия с формой post - PullRequest
1 голос
/ 23 марта 2010

У меня есть страница. (действие) и контроллер под названием 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 голосов
/ 23 марта 2010

Если я правильно понимаю, ваша проблема в том, что вы не публикуете клиента в своем действии "Page2". Вы можете опубликовать его как параметр сообщения (например, в скрытом поле) или в URL (в действии тега формы). Я предполагаю, что вы хотите это в своем URL.

Если вы используете форму html helper, вы можете использовать ее следующим образом:

<%using(Html.BeginForm("Page2", "Home", new { client = "clientABC" })) { } %>
0 голосов
/ 23 марта 2010

Это работает?

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}

Хотя я бы просто использовал именованные параметры в строке запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...