2013-02-16 65 views
0

我有一个用户可以登录我的应用程序的登录表单。如果登录失败,则向客户端显示错误消息。模型状态无效时在浏览器上显示html代码?

因为我这个控制器有这个两个功能: -

 [NopHttpsRequirement(SslRequirement.Yes)] 
    public ActionResult Login(bool? checkoutAsGuest) 
    { 
     if (_workContext.CurrentCustomer.IsRegistered()) 
     { 
      if (Request.QueryString["returnUrl"]!=null) 
      { 
       return Redirect(Convert.ToString(Request.QueryString["returnUrl"])); 
      } 

     } 

     var model = new LoginModel(); 
     model.UsernamesEnabled = _customerSettings.UsernamesEnabled; 
     model.CheckoutAsGuest = checkoutAsGuest.HasValue ? checkoutAsGuest.Value : false; 
     model.DisplayCaptcha = _captchaSettings.Enabled && _captchaSettings.ShowOnLoginPage; 
     return View(model); 
    } 

    [HttpPost] 
    [CaptchaValidator] 
    public ActionResult Login(LoginModel model, string returnUrl, bool captchaValid) 
    { 
     //validate CAPTCHA 
     if (_captchaSettings.Enabled && _captchaSettings.ShowOnLoginPage && !captchaValid) 
     { 
      ModelState.AddModelError("", _localizationService.GetResource("Common.WrongCaptcha")); 
     } 

     if (ModelState.IsValid) 
     { 
      if (_customerSettings.UsernamesEnabled && model.Username != null) 
      { 
       model.Username = model.Username.Trim(); 
      } 
      bool Active = true; 
      if (_customerRegistrationService.ValidateCustomer(_customerSettings.UsernamesEnabled ? model.Username : model.Email, model.Password, out Active)) 
      { 
       var customer = _customerSettings.UsernamesEnabled ? _customerService.GetCustomerByUsername(model.Username) : _customerService.GetCustomerByEmail(model.Email); 

       //migrate shopping cart 
       _shoppingCartService.MigrateShoppingCart(_workContext.CurrentCustomer, customer); 

       //sign in new customer 
       _authenticationService.SignIn(customer, model.RememberMe); 


       if (!String.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl)) 
       { 

        if (Request.QueryString["returnUrl"].ToString().Contains("search?q")) 
        { 

         string url = returnUrl; 
         if (Request.QueryString["select"] != null) 
          url = url + "&select=" + Request.QueryString["select"].ToString(); 

         if (Request.QueryString["startdate"] != null) 
          url = url + "&startdate=" + Request.QueryString["startdate"].ToString(); 


         if (Request.QueryString["enddate"] != null) 
          url = url + "&enddate=" + Request.QueryString["enddate"].ToString(); 

         if (Request.QueryString["s_loc"] != null) 
          url = url + "&s_loc=" + Request.QueryString["s_loc"].ToString(); 

         return Redirect(url); 
         // return Redirect(returnUrl + "&select=" + Request.QueryString["select"] == null ? "" : Request.QueryString["select"].ToString() + "&startdate=" + Request.QueryString["startdate"] == null ? "" : Request.QueryString["startdate"].ToString() + "&enddate=" + Request.QueryString["enddate"] == null ? "" : Request.QueryString["enddate"].ToString() + "&s_loc=" + Request.QueryString["s_loc"] == null ? "" : Request.QueryString["s_loc"].ToString()); 

        } 

        return Redirect(returnUrl); 

       } 
       else 
        return RedirectToRoute("HomePage"); 
      } 
      else 
      { 

       if (!Active) 
        ModelState.AddModelError("", _localizationService.GetResource("Account.Login.AccountNotactive")); 
       else 
        ModelState.AddModelError("", _localizationService.GetResource("Account.Login.WrongCredentials")); 
      } 
     } 

     //If we got this far, something failed, redisplay form 
     model.UsernamesEnabled = _customerSettings.UsernamesEnabled; 
     model.DisplayCaptcha = _captchaSettings.Enabled && _captchaSettings.ShowOnLoginPage; 
     return View(model); 
    } 

当用户输入错误登录信息,我添加了一些错误的模型状态,然后再次显示视图客户适当味精。

但我的问题是它在浏览器上显示html代码,当模型状态无效时不呈现代码。

为什么这些发生,我无法找到任何解决方案。

+0

你的意思是代替** BOLD **显示'BOLD''?你可以欣赏验证摘要如何显示在你的视图中吗? – dakait 2013-02-16 06:44:12

+0

你能澄清一点吗? – 2013-02-16 06:47:11

回答

2

您所描述的问题在您的视图中是一个问题,而不是您的控制器。如果你的html在一个属性中,那么你需要使用@ Html.Raw(Model.SomeProperty)以便它不被编码。