2014-01-28 3 views
2

я есть следующие модели классаPass список выбора Выбранное значение в модели

class Emp 
{ 
    int id { get; set; } 
    string name { get; set; } 
    Role role { get; set; } 
} 
class Role 
{ 
    int id { get; set; } 
    string rolename { get; set; } 
} 

и ниже моя форма для выполнения обновления Entity
.aspx

@using(@Html.BeginForm("edit", "Home", FormMethod.Post)){ 

      <label>name: </label>@Html.TextBoxFor(m => m.Name)<br /> 
      <label>role: </label>@Html.DropDownListFor(m => m.Role, (SelectList)ViewBag.roles) 

      @Html.Hidden("empid", Model.EmpId) 

      <input type="submit" value="submit" /> 
     } 

C# Действие Метод

public ActionResult edit(Emp emp) 
{ 
     if (ModelState.IsValid) // <-- always returning false 
     { 
      // Model.Role getting null, why ? 
     } 
} 

Для того, чтобы заполнить выпадающий в selectList

ViewBag.roles = new SelectList(dbContext.Roles, "roleid", "rolename", SelectedRole); 

сейчас в методе редактирования emp модель содержит empid и name, но role получая null, любую идею?

ответ

1

Возможно, причина в том, что модельное связующее не может связывать сложные типы, содержащиеся в модели. Вы можете заставить это работать, имея поле RoleId в модели Emp, а затем привязывая ее к этой RoleId.

Или вы можете пойти для шаблонов редакторов, чтобы достичь намеченной функциональности.

0

На самом деле нечего сказать, как создать объект Role из значения выбранной роли в сообщении. Кроме того, при создании представления он также не знает, какое свойство объекта Role использовать для выбора элемента в раскрывающемся списке.

Итак, вы должны привязать падение к свойству типа string, а не заданному пользователем типу.

0

Я thinck он должен быть

ViewBag.roles = new SelectList(dbContext.Roles, "id", "rolename", SelectedRole); 

"идентификатор" вместо "Идентификатор роли"

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