jes*_*iel 0 c# asp.net-mvc asp.net-mvc-5
我试图创建索引页面(使用产品列表)和创建页面(具有添加/保存的东西)的组合视图,IEnumerable我得到lambda表达式的错误.
这是我的代码:
@model IEnumerable<OIS.Models.Category>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.category_name)
</th>
<th>
@Html.DisplayNameFor(model => model.date_created)
</th>
<th>
@Html.DisplayNameFor(model => model.date_updated)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.category_name)
</td>
<td>
@Html.DisplayFor(modelItem => item.date_created)
</td>
<td>
@Html.DisplayFor(modelItem => item.date_updated)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</tbody>
</table>
//For for Creating new Item
@using (Html.BeginForm()){
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Category</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
//Im Gettig Error with this line (model => model.category_name)
@Html.LabelFor(model => model.category_name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
//Im Gettig Error with this line (model => model.category_name)
@Html.EditorFor(model => model.category_name, new { htmlAttributes = new { @class = "form-control" } })
//Im Gettig Error with this line (model => model.category_name)
@Html.ValidationMessageFor(model => model.category_name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?编辑:这是我的控制器
namespace OIS.Controllers{
public class CategoryController : Controller
{
private DbOnlineIS db = new DbOnlineIS();
// GET: Category
public ActionResult Index()
{
return View(db.Categories.ToList());
}
// Post: Category
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Include = "ID,category_name,date_created,date_updated")] Category category)
{
if (ModelState.IsValid)
{
category.date_created = DateTime.Now;
category.date_updated = DateTime.Now;
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(category);
}
// GET: Category/Create
public ActionResult Create()
{
return View();
}
// POST: Category/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,category_name,date_created,date_updated")] Category category)
{
if (ModelState.IsValid)
{
category.date_created = DateTime.Now;
category.date_updated = DateTime.Now;
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(category);
}
Run Code Online (Sandbox Code Playgroud)
要制作组合视图,您必须执行以下操作.
创建具有2个属性的ViewModel
public class CategoryViewModel {
public IEnumerable<OIS.Models.Category> Categories { get; set; }
public Category Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
之后,从2个局部视图中的视图移动,创建和列表.比方说_CategoryCreatePartial.cshtml和_CategoryListPartial.cshtml.
比组合视图变得像这样,Index.cshtml
@model OIS.Models.CategoryViewModel
@Html.Partial("_CategoryListPartial", Model.Categories)
@Html.Partial("_CategoryCreatePartial", Model.Category)
Run Code Online (Sandbox Code Playgroud)
部分观点:
_CategoryListPartial.cshtml
@model IEnumerable<OIS.Models.Category>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.category_name)
</th>
<th>
@Html.DisplayNameFor(model => model.date_created)
</th>
<th>
@Html.DisplayNameFor(model => model.date_updated)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.category_name)
</td>
<td>
@Html.DisplayFor(modelItem => item.date_created)
</td>
<td>
@Html.DisplayFor(modelItem => item.date_updated)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
_CategoryCreatePartial.cshtml
@model OIS.Models.Category
@using (Html.BeginForm("Create", "Category")){
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Category</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
//Im Gettig Error with this line (model => model.category_name)
@Html.LabelFor(model => model.category_name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
//Im Gettig Error with this line (model => model.category_name)
@Html.EditorFor(model => model.category_name, new { htmlAttributes = new { @class = "form-control" } })
//Im Gettig Error with this line (model => model.category_name)
@Html.ValidationMessageFor(model => model.category_name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
Run Code Online (Sandbox Code Playgroud)
控制器和索引操作
public class CategoryController : Controller
{
private DbOnlineIS db = new DbOnlineIS();
public ActionResult Index() {
var categoryViewModel = new CategoryViewModel();
categoryViewModel.Categories = db.Categories.ToList();
categoryViewModel.Category = new Category();
return View(categoryViewModel); // list + create category
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Category category) // call this action to create category.
{
if (ModelState.IsValid)
{
category.date_created = DateTime.Now;
category.date_updated = DateTime.Now;
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(category);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2023 次 |
| 最近记录: |