私のasp.net mvc 3アプリケーションには、フォームが検証されるビューがたくさんあります。ある段階で、検証が(どこでも)機能しなくなったことに気付きました。
その時から何をしたか思い出せない。さらに、バックワードを以前のリポジトリコミットに移動しようとしましたが、問題はずっと前に発生したようで、今になって初めて気づきました!!
私が確信している唯一のことは、データベースを何度も変更する必要があったため、.dbml ファイルを消去し、テーブルを何度も (何度も) ドラッグ アンド ドロップしたことです。
Linq to SQL を使用しています。ほとんどのビューは、「編集」テンプレートで生成されます。「WebStore.designer.cs」ファイル (「WebStore」はプロジェクト名) で [必須] 属性を使用します。とにかく、うまくいかない!
では、.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):
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");
}