Привязка значений не работает - PullRequest
0 голосов
/ 11 августа 2009

У меня есть модель, которая выглядит так:

public class UserAdminEditViewModel
{
    public User User { get; set; }
    public IEnumerable<Usergroup> Usergroups { get; set; }
    public IList<int> UsergroupID { get; set; }

    public UserAdminEditViewModel() {}
}

И мой вид выглядит так:

"%> UserEdit

UserEdit

<% using (Html.BeginForm()) {%>

    <fieldset>
        <legend>Fields</legend>
        <p>
            <label for="Username">Användarnamn: *</label>
            <%= Html.TextBox("Username", Model.User.Username) %>
            <%= Html.ValidationMessage("Username", "*") %>
        </p>
        <p>
            <label for="Firstname">Förnamn: *</label>
            <%= Html.TextBox("Firstname", Model.User.Firstname) %>
            <%= Html.ValidationMessage("Firstname", "*") %>
        </p>
        <p>
            <label for="Surname">Efternamn: *</label>
            <%= Html.TextBox("Surname", Model.User.Surname) %>
            <%= Html.ValidationMessage("Surname", "*") %>
        </p>
        <p>
            <label for="Email">E-post: *</label>
            <%= Html.TextBox("Email", Model.User.Email) %>
            <%= Html.ValidationMessage("Email", "*") %>
        </p>
        <p>
            <label for="Password">Lösenord: *</label>
            <%= Html.TextBox("Password", Model.User.Password) %>
            <%= Html.ValidationMessage("Password", "*") %>
        </p>
        <p>
            Användargrupper: <br />
            <%= Html.CheckBoxList(Model.Usergroups.Select(ug => ug.UsergroupID.ToString()), Model.Usergroups.Select(ug => ug.UsergroupName), "UsergroupID") %>
        </p>
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

<% } %>

<div>
    <%=Html.ActionLink("Tillbaka till användare", "Users") %>
</div>

Мой контроллер выглядит так:

public ActionResult UserEdit(int? userID)
    {
        User u;

        if (userID == null)
        {
            u = new User();
        }
        else
        {
            u = us.GetUsers(userID.Value).SingleOrDefault();
        }



        return View("UserEdit", new UserAdminEditViewModel { User = u, Usergroups = ug.GetUsergroups() });
    }


    [AcceptVerbs(HttpVerbs.Post)]
    //public ActionResult UserEdit([BindAttribute(Include = "Firstname,Surname,Username,Email,Password,UserID,UsergroupID")]User userobj, IList<int> UsergroupID)
    public ActionResult UserEdit(UserAdminEditViewModel userobj)
    {
        if (ModelState.IsValid)
        {
            try
            {

                //userobj.UsersUsergroups = new UsersUsergroup { UsergroupID = UsergroupID.ToList() };

                //us.SaveUser(userobj);
            }
            catch
            {
                ModelState.AddModelError("SomeError", "errrrrrrrrror");
            }
        }

        return View();
        //return View("UserDetail", new UserAdminEditViewModel { User = userobj });
    }

Проблема:

Если я использую созданную мною UserAdminEditViewModel, устанавливаются только значения для IList UsergroupID (это список флажков с именем UsergroupID). Если я использую класс User, я могу получить доступ ко всем свойствам пользователя по мере заполнения имени и т. Д.

Почему объект User не заполняется в UserAdminEditViewModel при публикации? Чего не хватает?

Заранее спасибо / M

EDIT:

Вид строго типизирован как «BookingSystem.MVC.ViewModels.UserAdminEditViewModel»

не может показать его в этом редакторе

1 Ответ

0 голосов
/ 11 августа 2009

использование

<%= Html.TextBox("User.Firstname", Model.User.Firstname) %>

. Проверьте представленный вид. Поля формы должны отображать:

 <input  type="text" name="User.Firstname" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...