2013-03-11 6 views
2

Я пытаюсь создать единое представление, которое позволяет пользователю просматривать текущие элементы, используя модель индекса, а также позволяет пользователю создавать новый элемент с помощью отдельной модели представления видаPartial View submit возвращает null

Так что я получил два ViewModels -IndexFunkyThingsViewModel -CreateFunkyThingViewModel

в сущности, я получил главный вид:

@model IndexFunkyThingsViewModel 
@foreach (var item in Model.FunkyThings) 
{ 
/*Indexy stuff*/  
} 

/*If create item*/ 
@if (Model.CreateFunkyThing) 
{ 
@Html.Partial("_CreateFunkyThingPartial", new CreateFunkyThingViewModel()); 
} 

Тогда в моем частичное представление я имею

@model CreateFunkyThingViewModel 
@using (Html.BeginForm(MVC.FunkyThings.CreateFunkyThing(Model))) 
{ 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Create FunkyThing</legend> 
     @Html.EditorForModel(); 
     <p> 
      <input type="submit" class="button green" value="CreateFunkyThing" /> 
     </p> 
    </fieldset> 
} 

Наконец, в контроллере у меня есть:

[HttpPost] 
public virtual ActionResult CreateFunkyThing(CreateFunkyThingViewModel createFunkyThingViewModel) 
{ 
    .. 
} 

Это все кажется компилировать счастливо и когда я иду к виду он работает до сих пор, как отображения создания полей и тому подобное. Однако, когда я нажимаю кнопку отправки, контроллер не получает данных. ActionResult вызывается, однако, в отладчике параметр createFunkyThingViewModel имеет значение null при вызове кнопки отправки.

Что я делаю неправильно?

ответ

2

При отправке на контроллер вы не отправляете модель на нее. Используйте это:

@using (Html.BeginForm("CreateFunkyThing", "ControllerName", FormMethod.Post)) 

затем удалите теги p из-за кнопки и не используйте ничего с ней.

Теги абзаца имеют тенденцию группировать кнопку отдельно от формы, даже если они находятся в одном и том же внешнем контейнере.

+0

Этому спасибо! –