我在验证表单的 asp.net mvc 3 应用程序中有很多视图。在某个阶段,我注意到验证停止工作(无处不在)。
我不记得从那以后我做了什么。此外,我尝试将后备词移到以前的存储库提交中,并且似乎问题发生在很久以前,而我现在才注意到这一点!
我唯一确定的是我必须多次更改数据库,所以我清理了 .dbml 文件并一次又一次地拖放我的表(很多次)。
我使用 Linq 到 SQL。大多数视图都是使用“编辑”模板生成的。在“WebStore.designer.cs”文件(“WebStore”是项目名称)中,我使用 [Required] 属性。总之,不行!
那么,.dbml 文件的更改会影响视图的验证吗?
先感谢您!
编辑:
例如这里是视图:
@model WebStore.WebStoreModels.Post
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.PostId)
<div>Title</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
<div>Text</div>
<div class="editor-field">
@Html.EditorFor(model => model.Text)
@Html.ValidationMessageFor(model => model.Text)
</div>
<p>
<input type="submit" value="Save" />
</p>
}
如果我不填写表格并单击“保存”,我将在我的数据上下文包装器中得到一个 SqlException(我保存更新后的帖子):
public void UpdatePost(Post post)
{
var dbPost = GetPost(post.PostId);
dbPost.Title = post.Title;
dbPost.Text = post.Text;
_dataContext.SubmitChanges(); // here the exception occures
}
验证不起作用!来自 WebStore.designer.cs 的代码块:
[Required(ErrorMessage = "Post title is required")]
public string Title
{ // here goes the content of this Post's property }
编辑(2):
这里有两种操作方法:
[HttpGet]
public ViewResult EditPost(int id)
{
var post = _postsRepository.GetPost(id);
return View(post);
}
[HttpPost]
public RedirectToRouteResult EditPost(Post post)
{
_postsRepository.UpdatePost(post);
return RedirectToAction("NewsFeed");
}