@ Html.TextBoxFor () génère une zone de texte vide lorsque la propriété correspondante a une valeur

J'ai créé un projet ASP.NET MVC 5 par défaut.

J'ai ajouté une propriété FullName à l'utilisateur:

public class ApplicationUser : IdentityUser
{
    public string FullName { get; set; }
}

Cette propriété a également été ajoutée au viewmodel:

public class ManageUserViewModel
{
    [Display(Name = "Name")]
    public string FullName { get; set; }

    ...
}

Et afficher une zone de texte sur une vue:

@Html.TextBoxFor(m => m.FullName)

Cela fonctionne bien, je peux définir le nom complet de l'utilisateur. J'ai seulement un problème: si l'utilisateur a déjà un ensemble de FullName, la zone de texte est toujours vide. Comment puis-je le rendre à la valeur réelle de la propriété FullName?

EDIT:

C'est le contrôleur qui affiche la vue avec la zone de texte:

    public ActionResult Manage(ManageMessageId? message)
    {
        ViewBag.StatusMessage =
            message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
            : message == ManageMessageId.ChangeDetailsSuccess ? "Your details have been changed."
            : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
            : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
            : message == ManageMessageId.Error ? "An error has occurred."
            : "";
        ViewBag.HasLocalPassword = HasPassword();
        ViewBag.ReturnUrl = Url.Action("Manage");
        return View();
    }
0
définir un point d'arrêt dans le fichier .cshtml et vérifier la propriété FullName du modèle
ajouté l'auteur Florian R., source
Utilisez simplement la fenêtre DirectInput et tapez Model.FullName
ajouté l'auteur Florian R., source
@JLe: J'ai peur de ne pas. Comment puis je faire ça? J'ai ajouté la méthode de contrôleur qui renvoie la vue qui a la zone de texte.
ajouté l'auteur Adam Szabo, source
@thefiloe: après avoir défini le point d'arrêt, comment puis-je accéder au modèle lors du débogage du fichier cshtml?
ajouté l'auteur Adam Szabo, source
Le mappez-vous correctement dans le contrôleur lorsque vous renvoyez la vue? Vous devez saisir le FullName à partir du ApplicationUser et le placer dans le modèle de vue.
ajouté l'auteur JLe, source

1 Réponses

public ActionResult Manage(ManageMessageId? message)
{
    ViewBag.StatusMessage =
        message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
        : message == ManageMessageId.ChangeDetailsSuccess ? "Your details have been changed."
        : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
        : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
        : message == ManageMessageId.Error ? "An error has occurred."
        : "";
    ViewBag.HasLocalPassword = HasPassword();
    ViewBag.ReturnUrl = Url.Action("Manage");

   //Get the currently logged on user
    var user = UserManager.FindById(User.Identity.GetUserId());

   //Copy the value of FullName to the view model
    var vm = new ManageUserViewModel {
        FullName = user.FullName
    };
    return View(vm);
}
0
ajouté