【发布时间】:2017-01-25 08:50:19
【问题描述】:
我的路线是这样写的。
routes.MapRoute(
name: "AdminECommerce",
url: "Admin/ECommerce/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional },
namespaces: new []{ "AdminEcommerce.Controllers" }
);
routes.MapRoute(
name: "ECommerce",
url: "ECommerce/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional },
namespaces: new []{ "Ecommerce.Controllers" }
);
routes.MapRoute(
name: "User",
url: "Plugin/User/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional },
namespaces: new []{ "User.Controllers" }
);
routes.MapRoute(
name: "UserRegistration",
url: "Plugin/UserRegistration/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional },
namespaces: new []{ "UserRegistration.Controllers" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
当我想在同一个控制器中将RedirectToAction 从一个动作使用到另一个动作时,它会重定向到其他地方。
例如,我希望它将我重定向到
Plugin/UserRegistration/Register/Register
但是,它让我去
Admin/ECommerce/Register/Register
不得不提的是,我的控制器在其他库中。
我的代码有什么问题?
更新:控制器Registration
public ActionResult Register()
{
ViewBag.securityQuestions = _dataRepository.GetContext().User_SecurityQuestion;
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult RegisterNewUser(User_User model, FormCollection collection)
{
try
{
// register new user
...
return RedirectToAction("Register");
}
catch
{
// making error messages
...
return RedirectToAction("Register");
}
我也试过了,
return RedirectToAction("Register","Registration");
它不起作用。
【问题讨论】:
-
显示您的控制器代码以进行重定向
-
我看到路由
AdminECommerce优先执行,而不是UserRegistration按自上而下的路由顺序,如果它们在区域中,您可以将 area 参数添加到defaults以区分它们。 -
我的项目中没有区域,只是为我的项目的每个部分单独的类库。
-
@AliVahidi 您使用的是哪个版本的 mvc?
-
我正在使用 mvc 4
标签: c# asp.net-mvc routetable