2013-11-24 2 views
0

Я создал проект ASP.NET MVC 5 по умолчанию.@ Html.TextBoxFor() создает пустое текстовое поле, когда соответствующее свойство имеет значение

Я добавил свойство FullName для пользователя:

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

Добавлено это свойство в ViewModel, а также:

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

    ... 
} 

и отобразить текстовое поле на вид:

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

Это хорошо работает, я могу установить FullName пользователя. У меня есть только одна проблема: если пользователь уже имеет набор FullName, текстовое поле все еще пустое. Как я могу заставить его иметь фактическое значение свойства FullName?

EDIT:

Это контроллер, который отображает вид с текстовым полем:

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

Правильно ли вы сопоставляете его с контроллером при возврате вида? Вы должны захватить 'FullName' из« ApplicationUser »и поместить его в модель представления. – JLe

+0

установить точку останова в .cshtml и проверить свойство FullName модели –

+0

@JLe: Боюсь, что нет. Как я могу это сделать? Я добавил метод контроллера, который возвращает представление с текстовым полем. –

ответ

1

Вам нужно 1) Получить ApplicationUser вы ищете, и 2) привязать свойство модели представления.

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); 
} 
Смежные вопросы