C#.NET MVC Route Aliasing

旧城冷巷雨未停 提交于 2020-01-07 02:31:15

问题


I've been searching and searching for away to make old URL like we used to do in aspx pages where you could have an alias pointing to a page like www.domain.com/my-great-alias point to www.domain.com/alias.aspx. I want to do the same thing in MVC but can not figure out how to make this happen in the route table. Where www.domain.com/my-great-alias would show up to the end user as such but point to www.domain.com/alias/2

Does this make sense to anyone else what I'm looking for?

// router

routes.MapRouteLowercase(
                            "Alias",
                            "{id}",
                            new
                            {
                                controller = "alias",
                                action = "select",
                                id = UrlParameter.Optional
                            }
                        );

// Alias controller

public ActionResult Select()
        {
            return View("select");
        }

// Recipe Controller

public ActionResult Select()
    {
        return View();
    }

回答1:


You should be able to do this utilizing route config and parameters (as long as it's in the same domain):

Routing

        routes.MapRoute(
            name: "AliasRoute",
            url: "{id}",
            defaults: new { controller = "Alias" }
        );

Controller

public class AliasController : Controller
{
    public ActionResult Index(string id)
    {
        //DO SOME DATABASE STUFF HERE TO LOOKUP THE CORRESPONDIND CONTROLLER AND ACTION
        var controllerAction = lookupControllerActionInDatabase(id);
        return View(controllerAction.ViewName);

        //OR

        //DO CONDITIONAL CHECKS HERE AND RETURN THE APPROPRIATE VIEW
        if (id == "my-great-alias") {
          return View("Alias");
        } else if (id == condition1) {
          return View("viewForCondition1");
        } else if (id == condition2) {
          return View("viewForCondition2");
        }
        //AND SO ON...
    }
}


来源:https://stackoverflow.com/questions/41865181/c-net-mvc-route-aliasing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!