【问题标题】:MVC 5 how to show message when a non-user visit the website?MVC 5 如何在非用户访问网站时显示消息?
【发布时间】:2019-09-10 10:09:50
【问题描述】:

我正在使用 ASP.NET MVC 5 创建一个程序。该程序是登录所必需的,并且页面内部是订单页面。如何制作此页面将显示一些字符串,例如“需要用户登录”。

随着我现在的进步,我只知道把[Authorize]属性放了

        [Authorize]
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult PlaceOrder(Order orderDetail)
        {
            String message = "";
            using (myDatabaseEntities1 myDatabase1 = new myDatabaseEntities1())
            {
                //WF
                Double PriceOfF1 = (orderDetail.A_ChickenChop_BP) * 14.9;
                Double PriceOfF2 = (orderDetail.A_ChickenChop_M) * 14.9;
                Double PriceOfF3 = (orderDetail.A_Spaghetti_AH) * 10.9;
                Double PriceOfF4 = (orderDetail.A_Spaghetti_P) * 10.9;
                Double PriceOfF5 = (orderDetail.A_Spaghetti_S) * 10.9;
                //CF
                Double PriceOfF6 = (orderDetail.A_ChickenRice_CB) * 6.9;
                Double PriceOfF7 = (orderDetail.A_ChickenRice_CW) * 6.9;
                Double PriceOfF8 = (orderDetail.A_ChickenRice_D) * 6.9;
                Double PriceOfF9 = (orderDetail.A_WantanMee_NS) * 6.9;
                Double PriceOfF10 = (orderDetail.A_WantanMee_IS) * 6.9;

                Double T_Price = orderDetail.OrderPrice;

                T_Price = PriceOfF1 + PriceOfF2 + PriceOfF3 + PriceOfF4 + PriceOfF5 +
                    PriceOfF6 + PriceOfF7 + PriceOfF8 + PriceOfF9 + PriceOfF10;

                if (T_Price > 1)
                {
                    myDatabase1.Orders.Add(orderDetail);
                    myDatabase1.SaveChanges();
                    message = "The order has been placed";
                    orderDetail.IsPlaced = true;
                }
                else
                {
                    message = "Please select at least one of the food";
                    orderDetail.IsPlaced = true;
                }
            }
            ViewBag.Message = message;
            return View();
        }
    }

当非用户点击该页面时,将重定向到用户登录页面。如何让它在非用户点击时显示消息

【问题讨论】:

标签: c# asp.net-mvc


【解决方案1】:

这是解决方案之一。在您要显示消息的页面上,在您希望消息出现的确切位置添加以下代码

  @if(!HttpContext.Current.User.Identity.IsAuthenticated)
       {
  <span class="your css class name">Please 
  <a href="@Url.Action("login action name")"> Login </a> to continue
    }

【讨论】:

    【解决方案2】:

    有几种方法可以做到这一点。如果用户已登录(您在请求中有此信息),则检查此方法内部并将他重定向到您想要的页面。它可以是登录页面,返回 url 到他之前的页面,也可以是登录信息的同一页面 - 取决于您的需要。只需输入谷歌“mvc5 如何检查用户是否登录”。其他方法是使用属性授权或添加一些自定义过滤器。

    【讨论】:

      【解决方案3】:

      通过上面的代码,您可以使用 [Authorize] 过滤器。在授权过滤器中,您可以验证用户是否已登录或登录会话是否存在。

      【讨论】:

        【解决方案4】:

        如果我正确理解您的问题,您只需在“未经身份验证”的用户单击“下订单”时弹出一个对话框或模式,对吧?如果是这种情况,不要将用户重定向到您的“PlaceOrder”发布方法,而是创建一个返回 JSON 状态(真或假)的 GET 方法来检查经过身份验证的用户会话是否处于活动状态? - 就这么简单。

        或者,如果您需要更优雅一些,创建一个自定义 [Authorize] 扩展“AuthorizationFilterAttribute”,您可以从中控制返回的视图或检查返回的 HTTP 状态

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-25
          • 2020-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多