2015-06-24 15 views
0

我混淆了輸入的ID,名稱,值和其他自定義屬性,它們是如何從其創建的。我的問題是:什麼是ASP FormCollection字段的基礎,在html輸入?

  1. FormCollection鍵從輸入的ID或名稱產生的?
  2. input的值是否與formCollection[key]相同?
  3. 我們可以從獲得其他輸入自定義屬性嗎FormCollection
+1

基於控件'name'和'value'屬性形成回傳'name/value'對。沒有提交控件'id'屬性(也沒有任何其他屬性)。你不應該使用'FormCollection' - 回發並綁定到你的模型! –

+0

我的表單中的數據是完全動態的,它創建了運行時。所以我沒有任何有關他們的信息。所以我不能使用ViewModel。 thx –

回答

2

FormCollection鍵是從輸入的ID或名稱創建的?

它們是從name創建的。

輸入的值是否與formCollection [key]相同?

一個FormCollectioninput列表從form,該keyinputname。您通過輸入name訪問value

我們可以從FormCollection獲取其他輸入自定義屬性嗎?

With FormCollection您只能使用namevalue


而不是FormCollection你應該創建自己的模型。通過這種方式,您可以更容易地驗證您的數據,並且您不必知道輸入的name即可獲取該值。

class MyModel 
{ 
    [Required] 
    public string Prop1 {get; set;} 
    //other validation/UI helpers attributes 
    public string Prop1 {get; set;} 
} 

[HttpPost] 
public ActionResult Action(MyModel model) 
{ 
    /* body */ 
} 

如果你想使用一個模型和內容創建的動態,你可以給名稱輸入模型綁定已瞭解,如下面給出

<input type="text" name="Prop1" ... /> 
<input type="text" name="Prop2" ... /> 

這將綁定到模型automarically。雖然在這種情況下驗證將僅在服務器端進行。

+0

我的表單中的數據是完全動態的,它創建了運行時。所以我沒有任何有關他們的信息。所以我不能使用ViewModel。 thx –

+0

@SiamakFerdos如果您知道** Model Binding **的工作方式,您可以創建輸入的名稱,以便使用ViewModel。或者您可以創建自定義模型聯編程序。 – adricadar

+0

我創建了一個自定義網格。我在頁面中使用了一對。我想獲得一個網格的所有行。用戶可以在客戶端的兩個網格之間移動行。所以,第一:我不知道在網格中的輸入,第二:我不知道哪一行被移動,我應該將它綁定到模型第三:這個網格是其他網絡解決方案上的項目。我爲所有類型的Web項目創建它。所以我根本無法使用Model –