隐藏URL控制器和动作 - Asp.NET MVC5

时间:2017-08-08 12:21:34

标签: asp.net-mvc asp.net-mvc-5

我想保留相同的服务器网址。例如:10.139.183.192到所有页面。

我不想显示10.139.183.192/Task/Create

当用户在地址栏上输入时,路线必须继续。但我想隐藏它。

我一直在搜索关于url重写的很多内容,但我找不到解决方案。

我试图更改全局asax,注册路由等

我是否在IIS服务器或应用程序中进行了更改?

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

2 个答案:

答案 0 :(得分:1)

您可以在Home Controller上处理所有页面并根据帖子返回View,例如:

public ActionResult Home()
{
    string page = Request["page"];
    switch (page)
    {
        case "Home":
            return View();
            break;
        case "Product":
            return View("Product");
            break;
        default:
            return View();
            break;
    }

    return View();
}

用户访问所有控制器并编码JS以更改URL,如下所示:

window.onload = function(){
    window.history.pushState("", "", "/");
}

答案 1 :(得分:0)

如果您使用Angular.JS等客户端框架,则只能本机执行此操作。

在C#.NET MVC5中,我只想到了三个想法。

  • 使用AJAX更改页面内容而不转到其他页面
  • 其次,您使用自制路由like @Rodolfo said
  • 第三个也是最后一个(这是最奇怪的一个),您不是在GET中调用您的页面而是传递POST数据(为每个链接创建一个FORM),因此基本路由可以根据表单数据控制显示的内容。这使您始终可以定位相同的网址10.139.183.192,而不像上面的网址将更改的位置(GET参数)。

就我个人而言,我认为您要实现的目标应该是使用专用的客户端框架(它们是为此而制作的,但它是JavaScript,而不是C#我相信)或使用Ajax方法。