2011-01-15 4 views
0

Эй, проблема в том, что контроллер редактирования в ASP.NET MVC 2 не работает. Я пробовал много способов, и ничего не работает.Редактор ASP.NET MVC 2 не работает с использованием viewmodel

Вот пример кода:

[Authorize] 
public ActionResult Edit() { 
    var edit = new UserViewModel { 
     User = Database.Users.Single(u => u.UserName == User.Identity.Name) 
    }; 

    return View(edit); 
} 

[Authorize] 
[HttpPost] 
public ActionResult Edit(FormCollection formCollection) { 
    var edit = new UserViewModel { 
     User = Database.Users.Single(u => u.UserName == User.Identity.Name) 
    }; 

    // TODO: try, catch 
    UpdateModel(edit, "User"); 
    Database.SaveChanges(); 

    return View(edit); 
} 

Вот класс вид модели:

public class UserViewModel { 
    public User User { get; set; } 
} 

Что я должен сделать, чтобы обновить эту модель пользователя в базе данных? В тот момент, когда я использую только поле электронной почты:

<% Html.EnableClientValidation(); %> 
<% using (Html.BeginForm()) {%> 
<div> 
    <div class="UserFieldLeft"><%: Html.LabelFor(model => model.User.Email) %></div> 
    <div class="UserFieldRight"><%: Html.TextBoxFor(model => model.User.Email, new { style="width: 200px" }) %></div> 
    <div class="UserFieldHelper"><%: Html.ValidationMessageFor(model => model.User.Email) %></div> 
    <p><input class="UserFieldInput" type="submit" value="Zmień email" /></p> 
</div> 
<% } %> 

Если я работаю на родной модели пользователя, это тоже не сработает. Что не так? Где я совершил ошибку?

Кстати, я должен использовать модель представления, чтобы добавить (в будущем) некоторые флажки (цвет волос, длина и т. Д.) Моему пользователю.

Благодарим вас за внимание и помощь.

ответ

0

Вам не нужен префикс «Пользователь».

UpdateModel(edit); 

должно работать. В formsCollection они должны быть ключом с User.Email. Это должно отображаться в свойстве Email в объекте пользователя.

+0

Я сделал это и увидел ошибку «Модель типа« Project.ViewModels.UserViewModel »не может быть обновлена. Я действительно не понимаю, что случилось. Я прочитал несколько руководств, и этот метод работал хорошо. – user576551

+0

Я думаю, проблема связана с вашим объектом User.Какой это объект? Вы можете попробовать UpdateModel (edit.User, «Пользователь», новая строка [] {«Электронная почта»}); Только обновить свойство электронной почты пользователя – Wim

+0

Я думаю, что вы правы. Я только что создал новое приложение MVC2 без каких-либо поставщиков или валидаторов. Хорошо работает. Пользовательский объект взят из SQL Server 2008. Он представляет собой поля пользователя компиляции с классом членства по умолчанию. – user576551

Смежные вопросы