2012-03-15 22 views
0

我正在使用MVC Razor,當我嘗試編輯某些東西時,我將它傳遞給ViewModel,它包含了所有必要的信息,我已經測試過了。爲什麼[HttpPost]只能選擇'EditorFor'?

這是我的觀點:

<div class="editor-label"> 
     @Html.LabelFor(model => model.CollectionId) 
    </div> 
    <div class="editor-field"> 
     @Html.DisplayFor(model => model.CollectionId) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.BrandName) 
    </div> 
    <div class="editor-field"> 
     @Html.DisplayFor(model => model.BrandName) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Season) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Season) 
     @Html.ValidationMessageFor(model => model.Season) 
    </div> 

正如你所看到的,我只使用@Html.EditorFor上的信息,他們可以改變,因爲這是所有我想改變。但我覺得有必要向他們展示其他信息,以便他們確切知道他們正在編輯的內容。

我的問題是,我如何才能實現相當於傳回信息的@Html.EditorFor,卻沒有真正允許它們進行編輯?

+1

如果信息沒有被編輯,爲什麼你甚至需要在表單提交時將它傳遞給你的控制器?據推測,你不允許編輯它有一個很好的理由 - 如果你允許它回發數據,什麼是阻止惡意用戶編輯數據,他們通常不會被允許編輯? – mdm 2012-03-15 11:14:33

+0

有點難以識別他們想編輯的'Collection',只有一個字段的信息它不會? – ediblecode 2012-03-15 11:16:16

+0

這是非常重要的一點。即使你不允許編輯數據,「壞用戶」也可以傳遞他自己改變的數據。您可以通過檢查現有數據中的數據或僅更新所需的對象值來實現此目的。 – ChrisB 2012-03-15 11:24:03

回答

4

您必須使用Html.HiddenFor將其值返回給控制器。

例如

<div class="editor-field"> 
    @Html.DisplayFor(model => model.CollectionId) 
    @Html.HiddenFor(model => model.CollectionId) 
</div> 
+0

這仍然會顯示數據嗎? – ediblecode 2012-03-15 11:17:23

+0

如果您仍然使用DisplayFor:是 – ChrisB 2012-03-15 11:20:03

相關問題