我有一个页面。 (动作)和一个名为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();
}
答案 0 :(得分:0)
这有用吗?
Widet/Page2?client=clientABC§or=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" })) { } %>