私は周りを検索してきましたが、単純な要件のように見えるものについての答えを見つけることができません:
MVC データ注釈検証では、検証メッセージ (「最大長 5 の文字列である必要があります」) を検証の概要またはフィールドの横に表示できますが、テキスト ボックスの値はクリアできます (検証が失敗した場合)。
ModelState.Clear()
とを使用しようとしましたが、これにより値と検証メッセージ (検証状態) の両方ModelState.Remove("CompanyName")
がクリアされます。
これを尋ねているのは、最近侵入テストがあり、推奨事項の 1 つは、検証が失敗した場合に安全な値 (クレジット カード番号など)を事前入力しないことだったからです。これは明らかにマイナーな問題ですが、必要がない場合は、(サーバーから) インターネット経由で値を送信しないことをお勧めします。
ここに私が取り組んでいるコードがあります:
public ActionResult Edit()
{
return View();
}
[HttpPost]
public ActionResult Edit(CompanyInput input)
{
if (ModelState.IsValid)
{
return View("Success");
}
//ModelState.Clear // clears both the value and validation message
//ModelState.Remove("CompanyName") // same result
return View(new CompanyInput());
}
そしてビューモデル:
public class CompanyInput
{
[Required]
[StringLength(5)]
public string CompanyName { get; set; }
[DataType(DataType.EmailAddress)]
public string EmailAddress { get; set; }
}
そしてビュー:
@model Test.Models.CompanyInput
<h2>Edit</h2>
@using (Html.BeginForm("Edit", "Company"))
{
@Html.EditorForModel()
<button type="submit">Submit</button>
}