2017-07-28 52 views
1

我有一個View綁定到包含Products和Contacts的ViewModel。我在該視圖的一部分中顯示 產品並且可以使用。我需要公開聯繫人的數據 定義,所以我可以 接受輸入併發布到聯繫人模型。綁定到ViewModel的視圖不包含某些對象的定義

它首先失敗在該行 @ Html.LabelFor(型號=> model.ContactFName)

錯誤消息:
'ProductPageViewModel' 不包含關於 'ContactFName'

PRODUCTPAGEVIEWMODEL的定義。 CS

public class ProductPageViewModel 
{ 
    public IEnumerable<Products> Products { get; set; } 
    public IEnumerable<Contact> Contacts { get; set; } 
    public string VmMessage { get; set; } 
} 

products控制器,索引操作

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); 
} 

產品型號

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; } 
} 

錄模型

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; } 
} 

索引視圖

@model JaniesWebLive.ViewModel.ProductPageViewModel 
@using (Html.BeginForm("AddItem", "Carts")) 
{ 
    foreach (var item in Model.Products) 
    { 
     <p><img class="product-image" [email protected](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 TO 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> 
} 

回答

0
在products控制器

,索引操作 嘗試: VAR接觸= db.DbContacts **。 Tolist(); **

甚至在視圖模型初始化,你可以把已:

聯繫= db.DbContacts ** Tolist(); **

你傳入具體的產品,而是一組觸點。

var products = db.DbProducts.Where(m => m.Category == product); 

var model = new ViewModel.ProductPageViewModel 
{ 
    Contacts = db.DbContacts.ToList(), 
    Products = products 
}; 
return View(model); } 
相關問題