2016-07-01 5 views
2

Ich habe eine Ansicht binden mit zwei Modellen ... so wähle ich ViewModel Methode, zwei Modelle mit einer Ansicht zu binden ... aber ich habe das Problem, eine Sicht von Create zu erstellen Geben Sie ... aber ich bin mit Fehler konfrontiert ... FeedbackMix ist ViewModel hier ... Ich muss Query-Objekt für die Anzeige von etwas im Layout zur gleichen Zeit muss ich Create Typ Ansicht Seite ...
ERROR übergeben :wie man Ansicht von create type mit zwei Modell

CS1061: 'FeedbackMixModel' does not contain a definition for 'Message' and no extension method 'Message' accepting a first argument of type 'FeedbackMixModel' could be found (are you missing a using directive or an assembly reference?)

-Controller

public ActionResult Create() 
{ 
    var msg= db.Messages.ToList(); 
    var feed = db.Feedbacks.ToList(); 
    FeedbackMixModel vm = new FeedbackMixModel(); 
    vm.allfeedbacks = feed; 
    //this is also create type view 
    return View(vm); 
} 

Ansicht

@model WebApplication5.Models.FeedbackMixModel 
.... 
@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    .... 
    @Html.LabelFor(model => model.Message, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.EditorFor(model => model.Message, new { htmlAttributes = new { @class = "form-control" } }) 
     @Html.ValidationMessageFor(model => model.Message, "", new { @class = "text-danger" }) 
    </div> 
    .... 
} 

Ansichtsmodell

public class FeedbackMixModel 
{ 
    public List<UserManager> allUserManagers { get; set; } 
    public List<Feedback> allfeedbacks { get; set; } 
    public List<Package> allpackages { get; set; } 
    public List<Messages> allmessages { get; set; } 
} 

Fehlerzeile

Line 16: @Html.LabelFor(model => model.Message, htmlAttributes: new { @class = "control-label col-md-2" })

+0

Die Fehlermeldung ist ziemlich geradlinig ... in Ihrem 'FeedbackMixModel' Sie – Hackerman

+0

keine' Message' Eigenschaft oder Methode haben yep ich weiß, ich diesen Code eingefügt, so dass Sie die Menschen leicht verstehen ,, , ich erkläre, was genau ich will..you Leute können bitte Ihren Code einfügen, wie kann ich Ansicht des Typs Create von diesem Szenario erstellen. – sajiii

Antwort

1

Sie Message genannt keine Eigenschaft auf Ihrem FeedbackViewModel haben, die Ihr LabelFor() Helfer erwartet wird, so es weiß nicht, wie man stapelt dies d:

public class FeedbackMixModel 
{ 
    public List<UserManager> allUserManagers { get; set; } 
    public List<Feedback> allfeedbacks { get; set; } 
    public List<Package> allpackages { get; set; } 
    public List<Messages> allmessages { get; set; } 

    // No property named Message here 
} 

Wenn Sie so etwas wie dieses haben möchten, müssen Sie die Eigenschaft hinzufügen und sie bevölkern, bevor es zu dem Modell zu übergeben.

Sind Sie sicher, dass Sie nicht eine Schleife haben, um durch Ihre allMessages Eigenschaft zu iterieren und auf diese von diesen einzelnen Elementen zuzugreifen?

<h4>Messages</h4> 
<hr /> 
@foreach(var message in Model.allMessages) 
{ 
    <div class="form-group"> 
     @Html.LabelFor(message => message.Message, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(message => message.Message, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(message=> message.Message, "", new { @class = "text-danger" }) 
     </div> 
    </div> 
} 
+0

für was ich FOREach Schleife verwenden ist es nur Create Typ View.Und das Layout von dieser Ansicht benötigt ein Abfrage-Objekt .. So muss ich ViewModel verwenden, weil dies create Typ Ansicht von table1 (Package-Klasse) und gleichzeitig ist Zeit, die ich Abfrage-Objekt einer anderen Tabelle sagen muss table2 (Benachrichtigungsklasse) für das Layout, um etwas durch Teilansicht anzuzeigen..ich hoffe, Sie verstehen mein Problem..actually weiß ich nicht, wie create Typ Ansicht von Ansicht Modell ... – sajiii

Verwandte Themen