2016-05-01 15 views
3

私のビューには2つのモデルが必要なので、それらを組み合わせたViewModelを作成しました。それは方法を得ることです。しかし、投稿で私のinput type=submitViewModelを返していますが、内部のプロパティの値はnullです。何かアドバイス?ViewModelプロパティsubmit on 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(); 
     } 
    } 

のための私の行動は、これが私のviewmodelされている。

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> 

これらの条件が現れたときにI送信ボタンを押してください。 my code

答えて

3

デフォルトのモデルバインダーはフィールドを結合しないでしょう。代わりにプロパティを使用してみてください。

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

あなたは私よりも数秒も速いです。私はまったく同じ答えを書いた+1 –

+0

親愛なる神。昨夜は本当に遅かったです。ありがとう。 –

関連する問題