C# 创建视图正在重定向到自身
我一直在尝试自动增加我的ID(BookId)。所有视图都正常工作(编辑、删除、详细信息、索引),但创建视图工作得不太好,因为每次我尝试添加新书时,它都会重定向到自身 在我的控制器中,我有以下功能:C# 创建视图正在重定向到自身,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我一直在尝试自动增加我的ID(BookId)。所有视图都正常工作(编辑、删除、详细信息、索引),但创建视图工作得不太好,因为每次我尝试添加新书时,它都会重定向到自身 在我的控制器中,我有以下功能: public ActionResult Create() { return View(); } // // POST: /Book/Create [HttpPost] public ActionResult Create(tbBooks tbbooks) { if (ModelSt
public ActionResult Create()
{
return View();
}
//
// POST: /Book/Create
[HttpPost]
public ActionResult Create(tbBooks tbbooks)
{
if (ModelState.IsValid)
{
db.tbBooks.Add(tbbooks);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(tbbooks);
}
在Create.cshtml中:
@using (Html.BeginForm("Create","Book")){
@Html.ValidationSummary(true)
<fieldset>
<legend>tbBooks</legend>
<div class="editor-label">
@Html.HiddenFor(model => model.BookId)
</div>
<div class="editor-field">
@Html.HiddenFor(model => model.BookId)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
使用(Html.BeginForm(“创建”、“书籍”)){
@Html.ValidationSummary(true)
tbBooks
@Html.HiddenFor(model=>model.BookId)
@Html.HiddenFor(model=>model.BookId)
}
@ActionLink(“返回列表”、“索引”)
我已经用表创建了数据库,列“BookId”设置为Identity Specification=Yes。
你能给我的任何帮助我都会很感激,
问候。这里发生了很多事情: 首先,最好在Create方法中指定它是否是
[HttpGet]
(在第一个方法中)
第二,你的观点是:
@Html.HiddenFor(model => model.BookId)
一旦您没有从[HttpGet]方法向视图传递任何值,这就没有任何意义
第三,通常不会为隐藏字段放置标签。通常不希望显示隐藏字段
此外,对于数据库中的结构,您可能需要在视图中填写字段名称、价格等。若您的ID是自动递增的,那个么您可能不需要自己处理它,数据库将为您处理它
最后,当您提交表单时,可能发生的情况是下面的if命令为false(您可以放置断点并进行检查):
因此,执行的下一个命令是:
return View(tbbooks);
这会使您返回到视图本身。我很惊讶你没有收到任何错误。我建议您查看一些教程,实际使用Visual Studio构建的代码,其中已经包含了一些关于如何工作的重要指标。您的
ModelState.IsValid
属性返回false,因此它正在执行返回视图(tbbooks)行。这意味着您的表单没有提供所有必需的值/根据数据注释定义,某些值是不可接受的
在你看来,要知道哪些验证失败了
将@Html.ValidationSummary(true)
更改为@Html.ValidationSummary()
然后再次提交添加表单。您将看到验证错误
传递给ValidationSummary
的布尔参数告诉系统排除属性错误。这就是为什么你看不到他们
public static MvcHtmlString ValidationSummary(
this HtmlHelper htmlHelper,
bool excludePropertyErrors
)
public static MvcHtmlString ValidationSummary(
this HtmlHelper htmlHelper,
bool excludePropertyErrors
)