2016-05-01 45 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

親愛的上帝。 - 昨晚真的很晚。謝謝。 –