asp.net - View bound to ViewModel does not contain a definition for some objects -


i have view bound viewmodel containing products , contacts. display products in 1 part of view , works. need expose data definition contacts can take input , post contacts model.

it fails first @ line @html.labelfor(model => model.contactfname)

error message:
'productpageviewmodel' not contain definition 'contactfname'

productpageviewmodel.cs

public class productpageviewmodel {     public ienumerable<products> products { get; set; }     public ienumerable<contact> contacts { get; set; }     public string vmmessage { get; set; } } 

products controller , index action

public actionresult index(string product) {     if (string.isnullorempty(product))     {         product = "homepage";     }     var products = db.dbproducts.where(m => m.category == product);     var contacts = db.dbcontacts;       var model = new viewmodel.productpageviewmodel     {         contacts = contacts,         products = products,     };     return view(model); } 

products model

public class products  {     [key]     public int wpid { get; set; }     public string category { get; set; }     public int categoryid { get; set; }     public string proddescshort { get; set; }     public string proddesclong { get; set; }     public string productsmall { get; set; }     public string productmedium { get; set; }     public string productlarge { get; set; }     public decimal? price1 { get; set; }  } 

contacts model

public class contact {        public int? contactid { get; set; }     public string contactfname { get; set; }     public string contactlname { get; set; }     public string contactemail { get; set; }     public string contactcomments { get; set; }             public string contactbirthday { get; set; }     public string contactsource { get; set; } } 

index view

@model janiesweblive.viewmodel.productpageviewmodel @using (html.beginform("additem", "carts")) {     foreach (var item in model.products)     {         <p><img class="product-image" src=@html.displayfor(modelitem => item.productmedium) /></p>         <h3>@html.displayfor(modelitem => item.wpproductid)</h3>         <h5>@html.displayfor(modelitem => item.price1)</h5>         <h6>@html.displayfor(modelitem => item.proddescshort)</h6>         <p class="text-center">@html.displayfor(modelitem => item.proddesclong)</p>         <p>             <button class="text-right btn btn-link js-delete">add cart</button>         </p>     } } @using (html.beginform("submitcontact", "products")) {     <div class="form-group">         @html.labelfor(model => model.contactfname)         @html.textboxfor(model => model.contactfname, new { @class = "form-control" })     </div>     <div class="form-group">         @html.labelfor(model => model.contactlname)         @html.textboxfor(model => model.contactlname, new { @class = "form-control" })     </div>     <div class="form-group">         @html.labelfor(model => model.contactemail)         @html.textboxfor(model => model.contactemail, new { @class = "form-control" })     </div>     <div class="form-group">         @html.labelfor(model => model.contactcomments)         @html.textareafor(model => model.contactcomments, new { @class = "form-control", rows = 3 })     </div>     @html.hidden("contactsource", "dealssignup")     <button type="submit" class="btn btn-primary">submit</button> } 

in products controller , index action try: var contacts = db.dbcontacts**.tolist();**

or in viewmodel initialisation can put already:

contacts = db.dbcontacts**.tolist();**

you passing concrete product set of contacts.

var products = db.dbproducts.where(m => m.category == product);   var model = new viewmodel.productpageviewmodel {     contacts = db.dbcontacts.tolist(),     products = products }; return view(model); } 

Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -