2011-06-14 71 views
1

我從視圖模型對象的數組構建一個屏幕,包含三個方面:手動綁定MVC模型,而無需HTML幫手複選框

public class StartViewModel { 

     public string Id{ get; set; } 

     public string Name { get; set; } 

     public bool Accept { get; set; } 
    } 

我則試圖將其綁定到我的觀點,像這樣:

<input type="hidden" name="StartRequests[<%: i.ToString() %>].Name" value="<%: StartRequests.Name %>" /> 
<input type="hidden" name="StartRequests[<%: i.ToString() %>].Id" value="<%: StartRequests.Id%>" /> 

然後我想要將Accept標誌綁定到複選框。我明白複選框缺少一個名稱屬性,所以我不能立即使用它,並且我明白Html.CheckBoxFor將生成第二個隱藏字段來存儲值。所以這是我的問題。

我沒有能力使用JavaScript。我需要配置這個複選框來有效地調整ViewModel中的值,但我不知道如何做到這一點。 Html.CheckBox助手如何填充它生成的隱藏字段?我認爲它是用javascript做到的。有人能幫助我理解一種方法來做到這一點嗎?我仍在研究模型綁定背後的想法。

+0

Html Helpers不使用Javascript,除了可能用於客戶端驗證(將其作爲Javascript注入到頁面中)。 Html Helpers是純服務器端代碼,使用字符串幫助器對象將HTML元素和屬性縫合在一起。如果你不能使用Javascript,並且你正在嘗試做的事情需要客戶端行爲(即在提交之前的瀏覽器中),那麼你運氣不好。 – 2011-06-14 20:45:42

+0

鑑於此,爲什麼'Html.CheckBoxFor'出來了? – 2011-06-14 20:48:52

回答

0

對於以下模型:

public class StartViewModel { 

    public string Id{ get; set; } 

    public string Name { get; set; } 

    public bool Accept { get; set; } 
} 

//-> Accept = false. 

解決辦法: 更改public bool Accept { get; set; }public string Accept { get; set; }

提交時,如果複選框被選中, 「接受」 值= 「上」。您可以通過這種方式檢測選中的值。