2016-05-01 40 views
3

我需要两种模型,因此我创建了ViewModel,它们组合了它们。这是获取方法。但是在帖子上,我的input type=submit正在返回ViewModel,但里面的属性值为空。有什么建议?ViewModel属性提交时为null

这是我对GET和POST

[HttpGet] 
    public ActionResult Report(int id) 
    { 
     using (SkolskaBibliotekaDBModel db = new SkolskaBibliotekaDBModel()) 
     { 
      ReportZaPrikaz RZP = new ReportZaPrikaz(); 

      var komentar = db.Komentar.FirstOrDefault(x => x.KomentarID == id); 

      RZP.kzp = new KomentarZaPrikaz() 
      { 
       KomentarID = komentar.KomentarID, 
       KomentarText = komentar.KomentarText, 
       KorisnikID = komentar.KorisnikID, 
       Reported = komentar.Reported, 
       VremeKomentara = komentar.VremeKomentara, 
       Ime = komentar.Korisnik.Ime, 
       Prezime = komentar.Korisnik.Prezime, 
       PicPath = komentar.Korisnik.PicPath, 
       VoteUp = komentar.VoteUp, 
       VoteDown = komentar.VoteDown 
      }; 

      RZP.report = db.PrijavaKomentara.Create(); 

      return View("Report",RZP); 
     } 
    } 

    [HttpPost] 
    public void Report(ReportZaPrikaz RZP) 
    { 
     using (SkolskaBibliotekaDBModel db = new SkolskaBibliotekaDBModel()) 
     { 
      db.PrijavaKomentara.Add(RZP.report); 
      db.SaveChanges(); 
     } 
    } 

行动,这是我的视图模型:

namespace SkolskaBiblioteka.ViewModels 
{ 
    public class ReportZaPrikaz 
    { 

     public KomentarZaPrikaz kzp; 
     public PrijavaKomentara report; 

    } 
} 

,这是我的看法:

@model SkolskaBiblioteka.ViewModels.ReportZaPrikaz 

@using SkolskaBiblioteka.ViewModels 

@{ 
    ViewBag.Title = "Пријава коментара"; 
} 

<div class="container"> 
@Html.Partial("_Komentar", Model.kzp) 

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>PrijavaKomentara</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

     @{ 
      Model.report.KorisnikId = ((KorisnikZaPrikaz)Session["Korisnik"]).KorisnikId; 
     } 
     @Html.HiddenFor(x => x.report.KorisnikId) 

     @{ 
      Model.report.KomentarId = Model.kzp.KomentarID; 
     } 
     @Html.HiddenFor(x => x.report.KomentarId) 

     @{ 
      Model.report.VremePrijave = DateTime.Now; 
     } 
     @Html.HiddenFor(x => x.report.VremePrijave) 

     <div class="form-group"> 
      @Html.LabelFor(model => model.report.Tekst, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.report.Tekst, new { htmlAttributes = new { @class = "form-control" } }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 
</div> 

这些情况出现时,我点击提交按钮。 my code

回答

3

默认的模型绑定器不会绑定字段。尝试使用属性改为:

public class ReportZaPrikaz 
{ 
    public KomentarZaPrikaz kzp { get; set; } 
    public PrijavaKomentara report { get; set; } 
} 
+2

你比我快几秒钟。我写了完全相同的答案+1 –

+0

亲爱的上帝。 - 昨晚真的很晚。谢谢。 –