2014-03-28 132 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