2017-07-28 7 views
1

私は、製品と連絡先を含む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; } 
} 

製品のCONTROLLER、indexアクション

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

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

お問い合わせ製品CONTROLLER、indexアクション トライでモデル

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" [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

: VAR連絡先=のdb.DbContacts **。 Tolist(); **

あるいはViewModelに初期化中にすでに置くことができます。

コンタクト= 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); } 
関連する問題