Pourquoi avez-vous besoin de stocker le nom d'utilisateur dans la vue? Vous serez sûrement lancer la transaction DB à partir d'un contrôleur si c'est le nom d'utilisateur pour l'utilisateur qui est actuellement connecté utilisé le MembershipProvider selon la dernière suggestion:
HttpContext.Current.User.Identity.Name
Sinon peut-être vous devriez envisager de créer un conteneur/classe wrapper qui représente clairement votre modèle View - certains pourraient considérer cette surpuissance pour une propriété supplémentaire mais je déteste les "chaînes magiques" dans le code.
public class MyView
{
public string UserName { get; set; }
public MyObject MyMainObject { get; set;}
public MyView(string username, MyObject myMainObject)
{
this.Username = username;
this.MyMainObject = myMainObject;
}
}
puis définissez votre vue type de modèle que:
System.Web.Mvc.ViewPage<MyNamespace.MyView>
cela, alors vous permet d'avoir des propriétés fortement typées pour tout votre point de vue par exemple
<%=Model.Username %>
<%=Model.MyMainObject.Title %>
et dans votre contrôleur, vous pouvez paramétrer votre action comme
public ActionResult(MyMainObject myMainObject, string username)
{
//Do something here
//if not correct
return View(new MyView(username, myMainObject));
}
Si au contraire vous vouliez aller dans cette voie:
ViewData["Name"] = User.Identity.Name;
ou
ViewData.Add("Name", User.Identity.Name);
Tenir compte créer Enums pour éviter encore une fois usin g littéraux de chaîne, par ex.
public enum UserEnum
{
Username,
Password
}
puis utilisez:
ViewData.Add(UserEnum.Username.ToString(), User.Identity.Name);
vais essayer de vous expliquer un peu plus. –
Rob a expliqué plus en détail dans sa réponse ce que je voulais dire. – neebz