私のアプリケーションには検証フォームがあります。そのフォームには2つのボタンがあります。受け入れるものと拒絶するもの。ユーザが拒絶を押すと、拒絶の理由フィールドが提供されなければならない。私はこのサーバサイドをチェックする。 私は最初にどのボタンが押されているかを確認し、フィールドが空であればモデルステートにmoddelエラーを追加します。しかし、フォームのすべてのフィールドは読み込み専用なので、それらはサーバーにポストされません。そのため、ビューがユーザーnに返されたときにはデータはありません。私はおそらく明らかに何かが不足しているでしょうが、何をすべきかを見つけることはできません。 (私は私のフォームのすべてのフィールドを非表示にすることができますが、大量のフィールドのため、これは本当に醜いでしょう)asp.net mvc Serverside検証戻り値なし
これは私のコードです。
[HttpPost]
public virtual ActionResult Validate(string action, Record dto) {
if(action == Global.Accept) {
ciService.Store(dto);
return RedirectToAction("Index", "Ci");
} else {
if(string.IsNullOrEmpty(dto.RejectionReason)) {
ModelState.AddModelError("RejectionReason", "REQUIRED!!!!");
return View("Validate", dto);
}
ciService.Reject(dto);
return RedirectToAction("Index", "Ci");
}
}
私は受け入れと拒否の2つのアクションメソッドを作ることを提案できますか? Validateという名前のアクションは、ciService.Store(dto)を実行するのに適切な場所ではありません。 – labroo
'readonly'フィールドはどういう意味ですか?あなたの入力タグに使用できる 'readonly'と' disabled'属性がありますか?それはあなたが話していることですか?両方の属性はユーザーがこれらのフィールドの値を変更できないようにしていますが、 'readonly'入力フィールドは' disabled'フィールドではない値をサーバーにPOSTします。 –
@DarinDimitrov私は、彼はモデルクラスのフィールドは読み取り専用であると思います。デフォルトのMVCテンプレートはHTMLフォームフィールドではなく、テキストとして表示されます。 –