【问题标题】:Redirect user to homepage C#?将用户重定向到主页 C#?
【发布时间】:2014-04-03 10:28:18
【问题描述】:

我在 MVC 4 中有一个简单的控制器,就像这样。抱歉,我是 .net 的初级人员,也许这很简单?

public class HomeController : BaseController
    {

        public ActionResult Index()
        {
            ViewBag.h1 = Resources.Language.HomeH1;
            ViewBag.Title = Resources.Language.HomeTitle;
            ViewBag.Description = Resources.Language.HomeDescription;
            return View();
        }

        public ActionResult Dataroom()
        {
            ViewBag.h1 = Resources.Language.DataRoomH1;
            ViewBag.Title = Resources.Language.DataroomTitle;
            ViewBag.Description = Resources.Language.DataroomDescription;
            return View();
        }

        public ActionResult Consultancy()
        {

            ViewBag.h1 = Resources.Language.ConsultancyH1;
            ViewBag.Title = Resources.Language.ConsultancyTitle;
            ViewBag.Description = Resources.Language.ConsultancyDescription;
            return View();
        }


        public ActionResult Services()
        {
            ViewBag.h1 = Resources.Language.ServicesH1;
            ViewBag.Title = Resources.Language.ServicesTitle;
            ViewBag.Description = Resources.Language.ServicesDescription;
            return View();
        }

        public ActionResult Contact()
        {

            ViewBag.h1 = Resources.Language.ContactH1;
            ViewBag.Title = Resources.Language.ContactTitle;
            ViewBag.Description = Resources.Language.ContactDescription;
            return View();
        }

它工作正常,当链接正常时,但如果有人输入 /simpleexample 等。 我希望用户始终重定向到主页,这是一个简单的解决方法吗?

【问题讨论】:

    标签: c# asp.net-mvc-4 redirect


    【解决方案1】:

    使用 http 状态代码 404 的自定义错误页面并始终重定向到您的控制器操作。 ASP.NET MVC 404 Error Handling

    【讨论】:

    • 我不想定制,我想总是重定向
    【解决方案2】:

    在 web.config 中添加自定义错误页面 url

    <customErrors mode="On" defaultRedirect="~/Home/Index" />
    

    【讨论】:

    • 描述:处理服务该请求所需的配置文件时出错。请查看下面的具体错误详细信息并适当地修改您的配置文件。解析器错误消息:无法识别的配置部分 customErrors。
    • 你把它放在&lt;system.web&gt;里面了吗?
    • 是的,但是当我尝试向 url 等 /Services6565 添加更多内容时,我仍然在“/”应用程序中收到此服务器错误。无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。
    【解决方案3】:

    将此添加到配置中:

    <customErrors mode="On">
       <error statusCode="404" redirect="~/Home/Index"/>
    </customErrors> 
    

    或其他方式:用属性处理错误。创建属性:

    public class HandleMyError : HandleErrorAttribute
        {
            public override void OnException( ExceptionContext filterContext )
            {
                if ( filterContext.ExceptionHandled ) { return ; }
                else
                {
                    string actionName = filterContext.RouteData.Values["action"].ToString();
                    Type controllerType = filterContext.Controller.GetType();
                    var method = controllerType.GetMethod( actionName );
                    var returnType = method.ReturnType;
    
                    if ( returnType.Equals( typeof( ActionResult ) ) || ( returnType ).IsSubclassOf( typeof( ActionResult ) ) )
                    {
                        filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "area", "" }, { "controller", "Home" }, { "action", "Index" } });
                    }
                }
    
                filterContext.ExceptionHandled = true;
            }
        }
    

    并添加[HandleMyError] 属性您的Home 控制器:

    [HandleMyError]
    public class HomeController : BaseController
    {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 2012-08-11
      • 2021-01-02
      • 1970-01-01
      • 2012-08-11
      相关资源
      最近更新 更多