C# 重定向操作重定向错误与其他命名空间asp.net mvc

C# 重定向操作重定向错误与其他命名空间asp.net mvc,c#,asp.net-mvc,routetable,C#,Asp.net Mvc,Routetable,我这样写我的路线 routes.MapRoute( name: "AdminECommerce", url: "Admin/ECommerce/{controller}/{action}/{id}", defaults: new { id = UrlParameter.Optional }, namespaces: new []{ "AdminEcommerce.Controllers" } ); routes.MapRoute( name: "ECom

我这样写我的路线

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
我必须提到我的控制器在其他库中

我的代码有什么问题

更新:控制器
注册

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");

它不起作用。

ASP.NET MVC识别这两条路由,这两条路由由UriTemplate识别

routes.MapRoute(
    name: "AdminECommerce",
    url: "Admin/ECommerce/{controller}/{action}/{id}",
    defaults: new { id = UrlParameter.Optional },
    namespaces: new []{ "AdminEcommerce.Controllers" }
);

routes.MapRoute(
    name: "UserRegistration",
    url: "Plugin/UserRegistration/{controller}/{action}/{id}",
    defaults: new { id = UrlParameter.Optional },
    namespaces: new []{ "UserRegistration.Controllers" }
);
MVC从上到下读取路由表,以将请求的Url与模板匹配。因此,在本例中,它将选择第一个模板

试着用它来代替


显示用于重定向的控制器代码我看到路由
AdminECommerce
首先执行,而不是按自上而下的路由顺序执行
UserRegistration
,如果它们位于区域中,您可以将区域参数添加到
默认值中以区分它们。我的项目中没有区域,我的项目的每个部分都有单独的类库。@AliVahidi您使用的是哪个版本的mvc?我使用mvc 4作为第一个参数,我将“注册”替换为“用户注册”,现在它运行良好,谢谢。很高兴能提供帮助:)我可以确认这是真的。我也有同样的问题。最简单的方法是操作方法和类名不具有相同的名称。但无论如何,如果可能的话,我希望这会有所改善第二个选项是使用重定向到url,而不是像这样的重定向到操作:
redirect(“http://www.google.com/)
return RedirectToRoute("Registration", new 
{ 
    controller = "Registration", 
    action = "Register"
});