2012-09-07 110 views
0

如果多次詢問我,不要打我。
我見過很多關於如何使用MVC編輯實體的精彩演示。他們希望我的編輯表格只包含3個字段,這些字段當然是可編輯的,因此能夠在客戶端和服務器之間輪換數據,直到用戶最終輸入正確的值。但我的應用程序有點複雜,我需要你的建議。
1)I有具有字段名稱和CreatedBy
2)只可編輯的字段爲名稱
3)在不正確的輸入的情況下,我需要重新填充的最佳方式MVC:編輯模型,外場

不可編輯字段的實體產品

爲此目的,我需要從回購中檢索業務對象並將缺失值分配給生成的視圖模型。可以有很多值。我應該一步一步給他們分配嗎?我應該使用(嘗試)UpdateModel嗎?我是否應該使用像AutoMapper(從未嘗試過)來指定如何通過對方更新實體?這有什麼常用的方法?請在包含超過3個可編輯字段的編輯表單上進行任何比較...謝謝!

+0

我不明白當你說,「如果輸入不正確,我需要用最好的方式重新填充不可編輯的字段。」這是否意味着您的不可編輯字段在視圖中存儲爲隱藏字段?向我發送您的觀點以及您希望通過表格提交或其他方式實現的目標。 – user1477388

+0

他們不存儲在隱藏,但如果模型無效,那麼我需要返回一個包含可編輯和不可編輯值的視圖給用戶。在控制器中,我只能得到可編輯的,我需要通過我的手來設置其他人。 – LINQ2Vodka

回答

0

根據您的評論,「他們不存儲在隱藏,但如果模型無效,那麼我需要返回一個包含可編輯和不可編輯值的視圖給用戶。那些,我需要通過我的手來設置別人。「以下是如何做到這一點:

<HttpPost()> 
Function Create(company As Company) As ActionResult 

    If ModelState.IsValid Then 

     db.Companies.Add(company) 
     db.SaveChanges() 
     Return RedirectToAction("Index") 

    End If 

    ' if model state is not valid 
     Return RedirectToAction("MyNewAction") 

End Function 

如果您的ModelState是無效的,然後發送到另一個動作(或視圖,如果你選擇)。如果你需要創建一個單獨的模型,你可以做到這一點,然後將模型發送到帶有添加字段的新視圖。

+0

此操作不會將要更正的輸入值返回給用戶。 – LINQ2Vodka

+0

您可以將模型(其中包含輸入)發送到像這樣的操作,返回RedirectToAction(「索引」,與{.id = company.CompanyId}一起使用)' – user1477388

+0

此處的ModelState將在呼叫後重置。此外,將會有不可取的Http 302重定向。另外,假設您有10個可編輯字段和10個不可編輯字段的編輯表單。你會把他們全部分配嗎?他們將下降到URL字符串:) – LINQ2Vodka