2014-03-28 149 views
0

我有這個控制器中的模型爲空(它的一切)的問題。因此,從視圖中模型被錯誤填充。所以當應用程序到達控制器時,模型是空的(一切都是空的)。模型從視圖不給控制器

查看:

@{ 
    ViewBag.Title = "Product Beheer"; 
    Layout = "~/Views/Shared/_Layout3.cshtml"; 
} 
@model IntroSport.Models.ProductToevoegModel 
<h2>ProductToevoegen</h2> 

@using (Html.BeginForm("ProductMaken", "Admin")) 
{ 
    //@Html.ValidationSummary(true) 

    <fieldset> 
     <div class="editor-label">Prijs</div> 
     <div class="editor-field"> 
            @Html.EditorFor(model => model.Product.Prijs)</div> 
     <div class="editor-label">Size</div> 
     <div class="editor-field"> 
            @Html.EditorFor(model => model.Product.Size)</div> 
     <div class="editor-label">Merk</div> 
     <div class="editor-field"> 
            @Html.EditorFor(model => model.Product.Merk)</div> 
     <div class="editor-label">Naam</div> 
     <div class="editor-field"> 
            @Html.EditorFor(model => model.Product.Naam)</div> 
     <div class="editor-label">URL Foto</div> 
     <div class="editor-field"> 
            @Html.EditorFor(model => model.Product.AfbeeldingURL)</div> 

     <input type="submit" value="Voeg toe" /> 
    </fieldset> 
} 

控制器:

public ActionResult ProductMaken() 
{ 
    try 
    { 
     ProductToevoegModel viewModel = new ProductToevoegModel(); 
     return View(viewModel); 
    } 
    catch (Exception e) 
    { 
     ViewBag.FoutMelding = "Er is iets fout gegaan: " + e; 
     return View(); 
    } 
} 
[HttpPost] 
public ActionResult ProductMaken(ProductToevoegModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     try 
     { 
      productDBcontroller.maakProduct(model); 
      return Redirect("/admin/ProductBeheer"); 
     } 
     catch (Exception e) 
     { 
      ViewBag.FoutMelding = "Er is iets fout gegaan: " + e; 
      return View(); 
     } 
    } 
    else 
    { 
     return View("ProductMaken", model); 
    } 

型號:

namespace IntroSport.Models 
{ 
    public class ProductToevoegModel 
    { 
     public Product Product { get; set; } 
    } 
} 

產品型號:

namespace IntroSport.Models 
{ 
    public class Product 
    { 
     public int ProductID; 

     [Required(ErrorMessage = "Dit is een verplicht veld!")] 
     public String Naam; 

     [Required(ErrorMessage = "Dit is een verplicht veld!")] 
     public String Size; 

     [Required(ErrorMessage = "Dit is een verplicht veld!")] 
     public String AfbeeldingURL; 

     [Required(ErrorMessage = "Dit is een verplicht veld!")] 
     public String Merk; 

     [Required(ErrorMessage = "Dit is een verplicht veld!")] 
     public int Categorie; 

     [Required(ErrorMessage = "Dit is een verplicht veld!")] 
     public int Voorraad; 

     [Required(ErrorMessage = "Dit is een verplicht veld!")] 
     public Double Prijs; 
    } 
} 

回答

1

你必須改變在Product類中的所有字段自動屬性:

public class Product 
{ 
    public int ProductID; 

    [Required(ErrorMessage = "Dit is een verplicht veld!")] 
    public String Naam { get; set; } 

    [Required(ErrorMessage = "Dit is een verplicht veld!")] 
    public String Size { get; set; } 

    [Required(ErrorMessage = "Dit is een verplicht veld!")] 
    public String AfbeeldingURL { get; set; } 

    [Required(ErrorMessage = "Dit is een verplicht veld!")] 
    public String Merk { get; set; } 

    [Required(ErrorMessage = "Dit is een verplicht veld!")] 
    public int Categorie { get; set; } 

    [Required(ErrorMessage = "Dit is een verplicht veld!")] 
    public int Voorraad { get; set; } 

    [Required(ErrorMessage = "Dit is een verplicht veld!")] 
    public Double Prijs { get; set; } 
} 
+0

我需要使用ProductToevoegModel因爲我後來想添加一個Dropbox的菜單。 – Kraishan

+0

這不會是這種模型的問題。描述問題。 –

+0

問題是,當我填寫表單並單擊提交時,HttpPost操作「ProductMaken」中的viewModel完全是空的。所以填寫的表格不能正確發送。 – Kraishan