2016-06-17 4 views
0

После публикации я получаю Список в модели null У моей модели есть свойство, которое является списком vwLog.Отправка формы в модели MVC 5 имеет значение null в контрольном сообщении метода

public class CreateLogViewModel 
{ 
    public List<vwLog> LogData; 
} 

В связи я использовал эту модель и использовал цикл по каждому элементу присвоить значение в текстовом элементе управления

@model CreateLogViewModel 

@using (Html.BeginForm("CreateLog", "Log", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 
{ 
    foreach (var item in Model.LogData) 
    { 
     <table>    
      <tr> 
       <td> 
        @Html.HiddenFor(modelItem => item.LogID) 
        @Html.TextBoxFor(modelItem => item.AgencyBillingCode) 
       </td> 
       <td> 
        @Html.TextBoxFor(modelItem => item.LicenseNumber) 
       </td> 
      </tr> 
     </table> 
    } 
    <div class="col-xs-12" align="center"> 
     <input class="btn btn-default" type="submit" name="Submit" value="Save" id="Submit"> 
    </div> 
} 

Моего контроллер

В Получе я задаю значение в объекте LogData, который представляет собой коллекцию vwlog.

public ActionResult CreateLog(CreateLogViewModel model) 
{ 
    model.LogData = GetDate(); 
    return View(model); 
} 

обновляет некоторое значение списка на экране и попытаться спасти, но я получаю model.LogData нуль в посте.

[HttpPost] 
public ActionResult CreateLog(CreateLogViewModel model, string submit) 
{ 
    if (model.LogData != null) 
    { 
     do this... 
    } 
} 

обновляет некоторое значение списка на экране и попытаться спасти, но я получаю model.LogData нуль в посте. модель не является нулевой, но объект коллекции равен null. Пожалуйста, дайте мне знать, где я ошибаюсь.

+0

Не относится к вопросу, но из соображений безопасности я предлагаю использовать сильные @ Html.AntiForgeryToken() в целях и аутентификации маркеров в контроллере с [ValidateAntiForgeryToken()] – Chad

+0

Вы не можете использовать 'foreach' петли (см обман), и ваша модель должна содержать свойства, а не поля, как указано NightOwl888. –

ответ

0

модель связующего MVC не работает с полем классом:

public class CreateLogViewModel 
{ 
    // This is a field 
    public List<vwLog> LogData; 
} 

вы необходимо использовать свойство:

public class CreateLogViewModel 
{ 
    // This is a property 
    public List<vwLog> LogData { get; set; } 
} 

ПРИМЕЧАНИЯ: Кроме того, необходимо убедиться, что ваш vwLog типа имеет общедоступные свойства для чтения и записи.

+0

Привет, спасибо ... Это работает. Я сделал пару изменений, включая преобразование этого свойства. Итак, теперь модель public List LogData {get; задавать; } и контроллер - Список LogList = новый Список (); Служба LogService = новый LogService(); LogList = getdata() model.LogData = LogList; – Reena