2

У меня возникла проблема с возвратом значений контроллеру при использовании ViewModel.MVC ViewModel возвращает ArgumentNullException

Для ясности я упростил приведенный ниже код, в котором у оригинала есть еще много полей.

Когда страница загружена, значение в скрытом поле соответствует ожидаемому. Однако, когда форма отправлена, значение в поле не отправляется, и вместо этого я получаю ArgumentNullException.

Просьба сообщить, что я делаю неправильно.

Посмотреть

@model Project.Models.SCView 
@using (Html.BeginForm("ScorecardEdit")) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    @Html.HiddenFor(model => model.FV.ID) 


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

} 

Модель

public class FixView 
{ 
    public int ID { get; set; } 

    [DisplayFormat(DataFormatString = "{0:ddd dd/MM/yyyy}")] 
    public DateTime MatchDate { get; set; } 

} 

public class SCView 
{ 
    public FixView FV { get; set; } 

    public SCView() 
    { 
     this.FV = new FixView(); 
    } 
} 

Контроллер

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult ScorecardEdit(SCView ReturnSC) 
{ 
} 
+4

Вы не отправляете SCView на сервер. Вы отправляете целое число. – mason

+0

@mason Спасибо, но я не понимаю. Этот парень [ссылка] (http://stackoverflow.com/questions/27191691/viewmodel-returns-null-on-postback-mvc-5) смог использовать тот же формат для обновления свойств без ошибок. – Xtravia9

+0

Попробуйте добавить дату ввода к вашему представлению и изменить метод действия, чтобы принять 'FixView' вместо' SCView'. – mason

ответ

2

код, который вы должны должны быть горе очий, как MVC должна быть в состоянии сопоставить FV.ID недвижимости, как ожидаются, как HiddenFor() помощника будет генерировать собственные имена для обработки отображения его:

enter image description here

Используя тот же самый код, который вы указали, отладчик показал следующее после заполнив форму:

enter image description here

вопрос здесь звучит, как у вас есть несколько других свойств, возможно, сбор на основе тех, которые используют DropDownListFor() хелперы, которые имеют коллекции WHI ch не отправляются на сервер, поэтому, когда вы пытаетесь использовать эту модель, вам нужно отобразить один из этих помощников, вы получаете ArgumentNullException.

+0

Спасибо. У меня было другое свойство в FixView с [DisplayName ("")]. Я не знаю, почему это вызовет проблему. – Xtravia9