私はこれを理解しようとするのにしばらく時間がかかりました!
一般的に:フォームから「読み取り専用、非表示」のプロパティを取得したい。
例から不必要なものをすべて削除しました:
私は次のモデルを持っています
public class ChangeOrderDetailModel
{
...
...
[ReadOnly(true)]
public int OrderId { get; set; }
}
そしてビューで:
@using (Html.BeginForm("SubmitChangeOrder", "Order"))
{
@Html.AntiForgeryToken()<br/>
@Html.HiddenFor(o => o.OrderId) <br />
...
...
}
今:
View HTML には、OrderID の非表示フィールドがあります...
セキュリティ上の問題が発生する可能性があるため、だれにも「OrderID」を変更してほしくありません。
フォーム送信時に OrderID 番号が必要です...
問題フォームがコントローラーに送信されると、 常に = 0
OrderController.SubmitChangeOrder(ChangeOrderDetailModel mdl){}
であることがわかります。mdl.OrderID
プロパティから属性を削除すると
ReadOnly(true)
、すべて正常に動作しますが、単純な JS を使用してフィールドの値を変更できるのは非常に悪いことです。
そして、ハッシュトークンだけでリレーしたくないので、簡単に壊れてしまいます:(
なぜこのように機能するのですか?
好きなことを達成するためのより良い方法はありますか?
注: 複数の変更命令が並行して進行している可能性があるため、セッションには問題があります。
ありがとうございます。