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
我猜当它发布到控制器时,FK
CategoryId
产品
模型中丢失了。在创建视图时,我添加了分部视图@Html.partial(“U Category”,model);