Я собираюсь разработать приложение ASP.NET MVC с использованием шаблона AdminLTE.Для операции CRUD я использовал новый элемент scaffolded, используя create «MVC 5 Controller с представлениями, используя Entity Framework».Редактирование и удаление работает просто отлично, но операции «создать» и «редактировать» не сработали, так как после запуска этих методов появляется ошибка 500.
Это код для моего контроллера:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Threading.Tasks;
using System.Net;
using System.Web;
using System.Web.Mvc;
using test2.Models;
namespace test2.Views
{
public class CasesController : Controller
{
private eLawDBModel db = new eLawDBModel();
// GET: Cases
public async Task<ActionResult> Index()
{
return View(await db.Cases.ToListAsync());
}
// GET: Cases/Details/5
public async Task<ActionResult> Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Case @case = await db.Cases.FindAsync(id);
if (@case == null)
{
return HttpNotFound();
}
return View(@case);
}
// GET: Cases/Create
public ActionResult Create()
{
return View();
}
// POST: Cases/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "caseID,caseName")] Case @case)
{
if (ModelState.IsValid)
{
db.Cases.Add(@case);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(@case);
}
// GET: Cases/Edit/5
public async Task<ActionResult> Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Case @case = await db.Cases.FindAsync(id);
if (@case == null)
{
return HttpNotFound();
}
return View(@case);
}
// POST: Cases/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit([Bind(Include = "caseID,caseName")] Case @case)
{
if (ModelState.IsValid)
{
db.Entry(@case).State = EntityState.Modified;
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(@case);
}
// GET: Cases/Delete/5
public async Task<ActionResult> Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Case @case = await db.Cases.FindAsync(id);
if (@case == null)
{
return HttpNotFound();
}
return View(@case);
}
// POST: Cases/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeleteConfirmed(int id)
{
Case @case = await db.Cases.FindAsync(id);
db.Cases.Remove(@case);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}
Это разметка вида операции создания:
@model test2.Models.Case
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Case</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.caseName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.caseName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.caseName, "", 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>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
, и это разметка вида для операции редактирования:
@model test2.Models.Case
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Case</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.caseID)
<div class="form-group">
@Html.LabelFor(model => model.caseName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.caseName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.caseName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
На странице отображается эта ошибка после запускаоперация создания:
[ОШИБКА 500]
Упс!Что-то пошло не так.
Произошла ошибка при обработке вашего запроса.Пожалуйста, попробуйте еще раз.
Если проблема не устранена, обратитесь в службу поддержки.
Сервер, который я сейчас использую, - это IIS Windows версии 10.0.