2015-03-27 4 views
3

Я хочу, чтобы обновить список пользователей, в мой контроллер я вернулся список пользователейМассовое обновление в MVC

return View("usersList", user); 

и в целях я использую

@using (Html.BeginForm("usersList", "UserManagement")) 
{ 
    @Html.EditorFor(model => model, "tbl_UserList"); 
} 

и в шаблоне редактора I использовать 'tbl_UserList.cshtml', как показано ниже

@model IList<tbl_Users> 

@using (Html.BeginForm()) 
{ 
<table> 
    <tr> 
    <th> 
     @Html.DisplayNameFor(model => model[0].FirstName) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model[0].LastName) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model[0].Email) 
    </th> 

    </tr> 

@foreach (var item in Model) { 
    <tr> 
    <td> 
     @Html.EditorFor(modelitem => item.FirstName) 
    </td> 
    <td> 
     @Html.EditorFor(modelItem => item.LastName) 
    </td> 
    <td> 
     @Html.EditorFor(modelItem => item.Email) 
    </td> 
    </tr> 
} 

</table> 

<input id="subButton" type="submit" value="submit" title="submit data" /> 
} 

и в контроллере

[HttpPost] 
public ActionResult UserList(List<tbl_Users> users) 
{ 
    //.. 
} 

здесь пользователи в контроллер имеет нулевое значение, как я могу решить эту> благодаря

+0

Покажите вам 'EditorTemplate'. –

ответ

2

Изменить ваш EditorTemplate к

@model tbl_Users 
<tr> 
    <td>@Html.EditorFor(m => m.FirstName)</td> 
    <td>@Html.EditorFor(m => m.LastName)</td> 
    <td>@Html.EditorFor(m => m.Email)</td> 
</tr> 

и переименовать его в tbl_Users.cshtml

Затем в главном окне

@model IList<tbl_Users> 
@using (Html.BeginForm("usersList", "UserManagement")) 
{ 
    <table> 
    <thead> 
     <tr> 
     <td>@Html.DisplayNameFor(m => m.FirstName)</td> 
     .... 
     </tr> 
    </thead> 
    <tbody> 
     @Html.EditorFor(m => m); // do not specify a name 
    </tbody> 
    </table> 
} 

Обратите внимание, что текущий цикл foreach генерирует повторяющиеся атрибуты id (недействительный html) и дублирует name атрибуты, которые не будут привязываться к коллекции (проверьте html до и после, чтобы понять).

+0

Я добавил цикл for в @ Html.EditorFor (m => m); // не указывать имя \t и он работает –

+1

НЕ добавляйте петлю! 'Html.EditorFor()' принимает 'IEnumerable ' и достаточно умен, чтобы правильно отображать коллекцию с помощью индексаторов. Если вам нужно добавить цикл, в вашем коде есть и другие ошибки. –

+0

как мы можем использовать @ Html.DisplayNameFor (m => m.FirstName), когда m - это список? –

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