我有accountController类,它有登录&家庭意见。
[HandleError] public class accountController : Controller { [HttpPost] public ActionResult login(LoginModal model, string returnUrl) { //Authentication return RedirectToAction("home"); } public ActionResult home() { return View(); } } ------------------------------ ----------------------------- Global.asax have Route entry.. so my urls is http://lmenaria.com/login http://lmenaria.com/home routes.MapRoute(null, "home", new { controller = "account", action = "home" }); routes.MapRoute(null, "login", new { controller = "account", action = "login" });
当我在浏览器上尝试这两个网址时,它们工作正常。但是当登录成功时,它会转到http://lmenaria.com/account/home 那么如何从此网址中删除“帐户”。当我使用return RedirectToAction(“home”)时会发生这种情况;并得到404错误。
所以请告诉我如何解决这个问题。我在网址中不需要控制器名称。
由于 Laxmilal Menaria
答案 0 :(得分:1)
routes.MapRoute(“home”,“home”,new {controller =“account”,action =“home”});
我试过以上MapRoute&使用RedirectToRoute而不是RedirectTOAction及其工作。
感谢。
答案 1 :(得分:0)
如果您想将控制器默认为“帐户”,而不在您的网址中显示,那么您可以执行类似
的操作routes.MapRoute(null,“{action}”,new {controller =“account”});
如果需要,您也可以使用默认值进行操作
routes.MapRoute(null,“{action}”,new {controller =“account”,action =“home”});
我正在编辑我的回答,让你知道你不需要像你一样明确定义每条路线。 MVC路由匹配模式。所以,而不是
routes.MapRoute(null, "home", new { controller = "account", action = "home" });
routes.MapRoute(null, "login", new { controller = "account", action = "login" });
仅使用
routes.MapRoute(null, "{action}", new { controller = "account" });
如果您定义了多个模式,请注意路线顺序,因为顺序很重要。 MVC将使用与您的URL匹配的第一个模式。
答案 2 :(得分:0)
我认为真正的问题是你要么没有创建或删除家庭控制器。
根据您的描述,听起来您应该为家庭控制器索引操作调用RedirectToAction。
答案 3 :(得分:0)
您的登录操作中有[HttpPost]。这应该是问题所在。我只是在没有[HttpPost]属性的情况下运行你的代码。这是工作。当您键入http://lmenaria.com/login时,由于该属性,您的“登录”操作不会被触发。因此,必须有一些其他路由进行路由。