我遇到的问题是此控制器中的模型为null(其中的所有内容)。因此,从视图页面可以错误地填充模型。因此,当应用程序到达控制器时,模型为空(一切都为空)。
查看:
@{
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;
}
}
答案 0 :(得分: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; }
}