2017-07-27 38 views
0

我有一個窗體與ViewModel和幾個(也許是預填充)字段。其中一個字段(複選框)只能由管理員訪問,而不能爲普通用戶提供。我使用@Html.TextboxFor(...)創建了我的字段。提交傳遞ViewModel值,如果沒有窗體中的字段它

當普通用戶提交表單時,所有數據都將正確傳遞,但模型中管理字段的值具有默認值(false)。如果該值在動作之前爲真,則該值將被更改,但用戶不應該能夠這樣做。

如何從給定的ViewModel提交值,如果沒有複選框,控制器將該值發送到預填充視圖?

注意: 我不想爲普通用戶和管理員創建兩種表單。 複選框值的隱藏字段也可以由用戶更改。

回答

1

沒有代碼,很難確切地說出問題出在哪裏,但總的來說,如果您正確處理發佈數據,則不會有任何問題。

您提到了一個視圖模型,但是如果您實際上正在使用視圖模型,則不清楚爲什麼會遇到問題。如果您不想通過發佈數據進行布爾重置,那麼不要將該屬性映射到您的實體類。如果您正在使用某種自動映射來完成此操作,那麼您應該將該屬性設置爲忽略,以便它不被包含。

此外,你應該確保你從現有的實體開始,從數據庫中取出新的數據庫,在這種情況下,布爾值將設置爲true。然後,當您映射視圖模型中的值(不包括此布爾屬性)時,它將保持爲真。如果您基於視圖模型創建了一些新實例,則無法知道它是否最初是真實的。

相關問題