Asp.net mvc 如何添加partialview以插入数据
我有两张分类表和产品表Asp.net mvc 如何添加partialview以插入数据,asp.net-mvc,asp.net-mvc-4,model-view-controller,asp.net-mvc-partialview,Asp.net Mvc,Asp.net Mvc 4,Model View Controller,Asp.net Mvc Partialview,我有两张分类表和产品表 Category:- CategoryId,CategoryName Product:- ProductId, ProductName, Price, CategoryId(FK) 我想从单个视图添加数据。 我将类别创建为局部视图,并将其渲染为创建页面 控制器为:- public class ProductController : Controller { private StoreDbEntities db = new StoreDbEntities();
Category:- CategoryId,CategoryName
Product:- ProductId, ProductName, Price, CategoryId(FK)
我想从单个视图添加数据。
我将类别创建为局部视图,并将其渲染为创建页面
控制器为:-
public class ProductController : Controller
{
private StoreDbEntities db = new StoreDbEntities();
//
// GET: /Product/
public ActionResult Index()
{
var products = db.products.Include(p => p.Category);
return View(products.ToList());
}
//
// GET: /Product/Details/5
public ActionResult Details(int id = 0)
{
product product = db.products.Find(id);
if (product == null)
{
return HttpNotFound();
}
return View(product);
}
//
// GET: /Product/Create
public ActionResult Create()
{
ViewBag.CategoryId = new SelectList(db.Categories, "CategoryId", "CategoryName");
return View();
}
public ActionResult CreateCategory()
{
return View();
}
[HttpPost]
public ActionResult CreateCategory(Category category)
{
if(ModelState.IsValid)
{
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Create");
}
return View(category);
}
//
// POST: /Product/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(product product)
{
if (ModelState.IsValid)
{
db.products.Add(product);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CategoryId = new SelectList(db.Categories, "CategoryId", "CategoryName", product.CategoryId);
return View(product);
}
}
创建的视图是:-
@model MvcApplication9.Models.Category
@Html.Partial("_Category",Model);
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Category</legend>
<div class="editor-label">
@Html.LabelFor(model => model.CategoryName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CategoryName)
@Html.ValidationMessageFor(model => model.CategoryName)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@model MvcApplication9.Models.Category
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Category</legend>
<div class="editor-label">
@Html.LabelFor(model => model.CategoryName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CategoryName)
@Html.ValidationMessageFor(model => model.CategoryName)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@model mvcapapplication9.Models.Category
@Html.Partial(“_Category”,Model);
@使用(Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
类别
@LabelFor(model=>model.CategoryName)
@EditorFor(model=>model.CategoryName)
@Html.ValidationMessageFor(model=>model.CategoryName)
}
@ActionLink(“返回列表”、“索引”)
而_Categoy的观点是:-
@model MvcApplication9.Models.Category
@Html.Partial("_Category",Model);
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Category</legend>
<div class="editor-label">
@Html.LabelFor(model => model.CategoryName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CategoryName)
@Html.ValidationMessageFor(model => model.CategoryName)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@model MvcApplication9.Models.Category
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Category</legend>
<div class="editor-label">
@Html.LabelFor(model => model.CategoryName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CategoryName)
@Html.ValidationMessageFor(model => model.CategoryName)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@model mvcapapplication9.Models.Category
@使用(Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
类别
@LabelFor(model=>model.CategoryName)
@EditorFor(model=>model.CategoryName)
@Html.ValidationMessageFor(model=>model.CategoryName)
}
@ActionLink(“返回列表”、“索引”)
运行时显示错误“一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性。”。请帮我解决这个问题。
提前感谢。什么错误,在哪个视图中?您的问题结构不正确。从哪里得到错误?从哪里调用局部视图?我看到的第一个错误是——你应该把脚本放在布局中。您不能在局部视图中包含脚本,并且在这样做时,“_categoyview”不会被渲染为局部视图,因为它缺少unobtrusive.js_Categoy视图是我的局部视图。我称之为“创建视图”。我有剧本的布局,但我没有提到它听到。我得到的错误是:“一个或多个实体的验证失败。有关更多详细信息,请参阅'EntityValidationErrors'属性。”能否从问题中删除所有不必要的代码?而且,观点似乎完全相同
EntityValidationErrors
是一个EF
我猜当它发布到控制器时,FKCategoryId
从产品
模型中丢失了。在创建视图时,我添加了分部视图@Html.partial(“U Category”,model);