Begin form doesn't submit inherited viewmodel ASP.NET MVC4 -


i have case:

[serializable] public class formbuscarcortereligacaoviewmodel {     public cortereligacao cortereligacao { get; set; } }  [serializable] public class ordensfinalizadasviewmodel : formbuscarcortereligacaoviewmodel {     public manutencao manutencao { get; set; }     public datetime? datainicio { get; set; }     public datetime? datafim { get; set; }      public ordensfinalizadasviewmodel()     {     } } 

so child here ordensfinalizadasviewmodel. have this:

@model projetopath.ordensfinalizadasviewmodel  @using (html.beginform("buscar", "ordensfinalizadas", formmethod.post, new { id = "formbuscarordensfinalizadas" })) {     @html.partial("~/views/shared/_formbusca.cshtml", model) } 

and controller:

    [httppost]     public actionresult buscar(ordensfinalizadasviewmodel modelordensfinalizadas)     {         //do stuff     } 

what want have access cortereligacao of formbuscarcortereligacaoviewmodel. filled ordensfinalizadasviewmodel properties.

my view ~/views/shared/_formbusca.cshtml:

@using capgemini.telemetria.stcortes.domain.viewmodel.common @model capgemini.telemetria.stcortes.domain.viewmodel.common.formbuscarcortereligacaoviewmodel  @{     var modelordensfinalizadas = model projectpath.ordensfinalizadasviewmodel; }  <table class="tabela_filtro" style="border: 1px solid #ccc; margin-bottom: 5px; font-size: 11px" /> <thead>  [...] </thead> <tbody>     @if(modelordensfinalizadas != null)     {         <tr>             <td>                 <label>                     data                 </label>             </td>             <td>                 @html.textboxfor(model => modelordensfinalizadas.datainicio, new { id = "datainicio", @class = "campodata", @placeholder = "data inicio" })             </td>             [...]         </tr>     }     <tr>         <td>             <label class="label_filtro">                 cp             </label>         </td>         <td>             @html.editorfor(model => model.cortereligacao.corecp, new { style = "width: 20px;" })             <span class="validation-message">@html.validationmessagefor(model => model.cortereligacao.corecp)</span>         </td>         [...]             <input type="image" src="~/content/img/icons/enviar.gif" value="buscar" title="buscar" />         </td>     </tr> </tbody> 

is possible that? i'm kinda new on asp.net mvc. appreciate / sugestion.

regards

in view telling model type formbuscarcortereligacaoviewmodel. if change

@using capgemini.telemetria.stcortes.domain.viewmodel.common @model capgemini.telemetria.stcortes.domain.viewmodel.common.ordensfinalizadasviewmodel  

and delete section

@{     var modelordensfinalizadas = model projectpath.ordensfinalizadasviewmodel; } 

you should able use

@html.editorfor(model => model.cortereligacao.corecp, new { style = "width: 20px;" }) 

you need change textboxfor

@html.textboxfor(model => model.datainicio, new { id = "datainicio", @class = "campodata", @placeholder = "data inicio" }) 

have tried adding constructors models initialize child properties?

[serializable] public class formbuscarcortereligacaoviewmodel {     public formbuscarcortereligacaoviewmodel()     {         cortereligacao = new cortereligacao();     }     public cortereligacao cortereligacao { get; set; } }  [serializable] public class ordensfinalizadasviewmodel : formbuscarcortereligacaoviewmodel {     public manutencao manutencao { get; set; }     public datetime? datainicio { get; set; }     public datetime? datafim { get; set; }      public ordensfinalizadasviewmodel()         : base()     {         manutencao = new manutencao();     } } 

Comments