2015-04-30 22 views
0

我試圖做這個工作,但我無法弄清楚爲什麼它不工作,在小提琴手我得到所有的屬性填充正確,但在行動參數它總是作爲null。如何在http post上綁定viewmodel操作

我的視圖模型:

public class PaymentViewModel 
    { 
    public UserDto UserModel { get; set; } 
    public PaymentDto PaymentModel { get; set; } 
    } 

指數操作:

public ActionResult Index() 
    { 
     var model = new PaymentViewModel 
     { 
      PaymentModel = new PaymentDto(), 
      UserModel = new UserDto {P erfil = new PerfilDto() } 
     }; 
     return View(model); 
    } 

索引視圖:

@model Models.PaymentViewModel 

    @using (Html.BeginForm("Pay", "Payment", FormMethod.Post, new { @class = "col-lg-12 no-padding form-cadastro margin-top-20" })) 
    { 
     @Html.Partial("~/Views/User/_Register.cshtml", Model.UserModel.Perfil) 
     @Html.Partial("_Payment", Model.PaymentModel) 
    } 

POST操作:

 [HttpPost] 
    public async Task<ActionResult> Pay(PaymentViewModel model) 
    { 
    } 

當我發佈表單時,我將所有對象都設爲null。這裏做什麼錯了?

編輯:_Register局部視圖

@model Models.PerfilDTO 
<div class="row"> 
<div class="form-group col-xs-12"> 
@Html.LabelFor(m => m.Email) 
@Html.TextBoxFor(m => m.Email, new { @class = "form-control", id = "email", required = string.Empty }) 
</div> 
<div class="form-group col-xs-12">   
    @Html.LabelFor(m => m.ConfirmEmail) 
    <input type="email" class="form-control" id="confirmEmail" name="ConfirmEmail" required> 
</div> 
<div class="form-group col-xs-12"> 
<div class="col-xs-12 col-sm-5 no-padding"> 
@Html.LabelFor(m => m.Password) 
@Html.TextBoxFor(m => m.Password, new { @class = "form-control", id = "Password", required = string.Empty }) 
</div>   
</div> 
</div> 
+0

,你的視圖代碼張貼到您的丹戎巴葛方法? –

+0

@Mak,對不起,我把這裏寫錯了,並編輯操作,但是,付款後提交的行爲提交 – gog

+2

我們可以看到兩個部分的意見嗎? –

回答

1

你 '送' 給控制器兩種不同的模式Models.PerfilDTOModelsPaymentDto他們都不是Models.PaymentViewModel

部分視圖應該與控制器具有相同的模型。

@model Models.PaymentViewModel 
... 
@Html.TextBoxFor(m => m.UserModel.Perfil.Email, new { @class = "form-control", id = "email", required = string.Empty }) 
... 

而且你應該通過同型號部分:

當您提交
... 
@Html.Partial("~/Views/User/_Register.cshtml", Model) 
@Html.Partial("_Payment", Model) 
... 
+0

多數民衆贊成它!謝謝。 – gog