j'ai le contrôle LogOn.ascx qui se trouve à la page principale Site.master:ASP.Net MVC: Problèmes avec PartialView
<% Html.RenderPartial("LogOn"); %>
Cette commande contient formulaire email et mot de passe textboxed qui est soumis à LoginController:
public class LoginController : Controller
{
...
[HttpPost]
public ActionResult Login(string email, string password)
{
if (this.userRepository.ExistByEmail(email) &&
this.authenticationService.IsPasswordMatches(email, password))
{
var user = this.userRepository.GetByEmail(email);
this.userSession.LogIn(user);
return PartialView("LogOn", user);
}
return PartialView("LogOn");
}
}
donc, si l'utilisateur est authentifié je passe avec succès l'utilisateur dans le modèle de vue partielle LogOn (simplifié):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Core.Model.User>" %>
<%= this.Model.FirstName %>
J'ai 2 problèmes avec ce code:
Après avoir appelé
return PartialView("LogOn")
je reçois exception « Le IControllerFactory « UI.Services.ControllerFactory » n'a pas retourné un contrôleur pour le nom« default.aspx » Cette question est résolu en ajoutant un routage pour "default.aspx". Mais pourquoi la requête va à "default.aspx" quand j'appellereturn PartialView(..)
? (J'utilise le serveur web VS)Je reçois exception de référence null dans LogOn.ascx même si l'utilisateur a été authentifié avec succès et la valeur non nulle a été adoptée en PartialView sur la ligne suivante:
Quelqu'un a-t-il une idée de la raison pour laquelle l'utilisateur n'est pas passé dans LogOn.ascx? Merci
Ben, merci de répondre. Vous avez raison - c'est un appel non-ajax et dans LogOn.ascx il y a une vérification pour déterminer si la requête courante est authentifiée (je l'ai désinsérée dans l'exemple). Je commence avec MVC pour que je puisse mal comprendre certains concepts. J'ai donc changé 'return PartialView ("LogOn", utilisateur)' on 'return Voir ("LogOn", utilisateur)' - le même résultat. Je n'ai pas compris ce que vous pensiez de "Vous devriez appeler <% Html.RenderPartial (" LogOn ");%> avec l'utilisateur". Je pensais que View partage son ViewData et son modèle avec une vue partielle imbriquée (si la vue partielle n'a pas ses propres données d'affichage explicitement transmises). Ou je me trompe? – alex