我已经有一段时间试图弄清楚这一点了!
通常:我想从我的表单中获取“只读、隐藏”属性。
我从示例中删除了所有不必要的内容:
我有以下模型
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 号...
问题当表单提交给控制器时,
OrderController.SubmitChangeOrder(ChangeOrderDetailModel mdl){}
我看到它mdl.OrderID
总是 = 0。当我
ReadOnly(true)
从属性中删除属性时,一切正常,但是任何人都可以使用简单的 JS 更改字段的值,这非常糟糕。
而且我不想只在哈希令牌上中继,因为它也很容易被破坏:(
为什么它会这样工作?
我是否错过了一些东西,一种更好的方式来实现我喜欢的东西?
注意:可能有几个变更单同时进行,所以会话有点问题。
谢谢大家。