简体   繁体   English

ASP.NET MVC 中的自定义路由以绕过家庭控制器/索引

[英]Custom Route in ASP.NET MVC to bypass Home Controller/Index

My current website requires user to choose their restaurant type before accessing the sub menus.我当前的网站要求用户在访问子菜单之前选择他们的餐厅类型。

For example, when users try to direct access to http://localhost:8888/Restaurant/KFCMenu/?id=KFCCurlyFries they will be redirected to this page http://localhost:8888/Restaurant/Home例如,当用户尝试直接访问http://localhost:8888/Restaurant/KFCMenu/?id=KFCCurlyFries时,他们将被重定向到此页面http://localhost:8888/Restaurant/Home

The logic here I would like to mention is since they want to access to KFC Curly Fries menu (in the parameter), the route should auto assign the restaurant type based on the parameter and skip the Home controller/Index to choose.我想在这里提到的逻辑是因为他们想要访问 KFC Curly Fries 菜单(在参数中),路由应该根据参数自动分配餐厅类型并跳过Home controller/Index来选择。

May I know how can I write my custom route to bypass the Home controller/Index in this scenario?我可以知道在这种情况下如何编写自定义路由来绕过 Home 控制器/索引吗?

This is my default routing in RouteConfig.cs这是我在 RouteConfig.cs 中的默认路由

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "UserLogin", action = "Index", id = UrlParameter.Optional }
);

Updates:更新:

My Restaurant controller我的餐厅 controller

 public class RestaurantController: Controller
    {
        public ActionResult Index(HomeModel vm, string btnModeMcd, string btnModeKFC, string btnModePizzaHut, string Menu)
        {
            if (!string.IsNullOrWhiteSpace(Menu))
            {
                TempData["Success"] = "<script>Swal({" +
                            "title: 'Access Denied'," +
                            "text: 'Access Denied for " + Menu + " Menu'," +
                            "type: 'warning'," +
                            "timer: 2500," +
                            "confirmButtonColor: '#5cb85c'," +
                            "cancelButtonColor: '#3085d6'," +
                            "confirmButtonText: 'OK'," +
                            "cancelButtonText: 'New Menu'" +
                        "});</script>";
            }

            if (string.IsNullOrWhiteSpace((string)Session["MODE"]))
            {
                Session["MODE"] = "Mcd";
            } 

            if (btnModeMcd != null)
            {
                Session["MODE"] = "Mcd";
            }

            if (btnModeKFC != null)
            {
                Session["MODE"] = "KFC";
            }

            if (btnModePizzaHut != null)
            {
                Session["MODE"] = "PizzaHut";
            }
            
            vm.Mode = (string)Session["MODE"];
            return View(vm);
        }
        
        public ActionResult About()
        {
            ViewBag.Message = "Your description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }

        public ActionResult AccessDenied(string Menu)
        {
            TempData["Success"] = "<script>Swal({" +
                        "title: 'Access Denied'," +
                        "text: 'Access Denied for " + Menu + " Menu'," +
                        "type: 'warning'," +
                        "timer: 2500," +
                        "confirmButtonColor: '#5cb85c'," +
                        "cancelButtonColor: '#3085d6'," +
                        "confirmButtonText: 'OK'," +
                        "cancelButtonText: 'New Menu'" +
                    "});</script>";
            return View();
        }
    }

you have way to much going on and your not showing enough to actutal answer你有很多事情要做,但你没有表现出足够的实际答案

//url: Restaurant/Index?menu="someValue"
public class RestaurantController: Controller
{
    //you need to be clear if this is a post or get..
    [HttGeet]
    public ActionResult Index(HomeModel vm, string menu)
    {
        //do check if menu is valid, return 404 if not
        Session["MODE"] = menu; //why not call this RestaurantName
        return View();
    }
}
        
//what is HomeModel

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM