2010-12-15 112 views
0

我仍然是.NET MVC的初學者,所以如果我在做一些愚蠢的事情,請糾正我。我試圖創建一個動作/視圖組合,這將允許我從1個linq查詢中顯示2個編輯表單。因此,這裏是我的行動:ASP.NET MVC多種形式

Function Settings() As ActionResult 
    Dim pagetext = (From t In _db.PageTexts _ 
        Where t.campus = My.Resources.Campus _ 
        Select t) 
    Return View(pagetext) 
End Function 

這是我的觀點:

<% For Each item As EDKiosk.PageText In Model%> 
<% Using Html.BeginForm("Settings", "Admin")%> 
    <div class="editor-label"> 
     <%= Html.LabelFor(Function(model) item.recommend)%> 
    </div> 
    <div class="editor-field"> 
     <%= Html.TextAreaFor(Function(model) item.recommend)%> 
     <%= Html.ValidationMessageFor(Function(model) item.recommend)%> 
    </div> 
<% End Using %> 
<% Next %> 

所以,我的第一個問題是,我在做什麼,對嗎?然後,我的後續問題是我的方法如何處理這些數據?先謝謝你!

編輯:

每薩穆埃爾的建議,我返工我的代碼像這個 -

<% Dim hidden = New With {Key .type = "hidden"}%> 
<div class="editor-field"> 
    <%= Html.TextBox("id", item.id.ToString(), hidden)%> 
</div> 

<div class="editor-field"> 
    <%= Html.Label("recommend")%> 
    <%= Html.TextArea("welcome", item.recommend.ToString())%> 
</div> 

它現在,但我覺得它依然是那樣笨重。思考?

回答

0

您正在使用單個表單元素創建表單,recommend。您可能需要一個隱藏的表單字段作爲關聯的ID,或者將表單ID包含在動作路由數據中。

0

在HTML中,您可以擁有儘可能多的表單,只需確保它們不會嵌套,因爲這會導致瀏覽器中出現未定義的行爲。在你的特定情況下,你爲你的模型中的每個元素生成一個表單,但是這個表單不包含任何輸入字段(隱藏,文本,下拉列表,複選框,單選按鈕......)。因此,如果您提交空表格,則不會將數據發送給控制器操作,您將無法識別提交的是哪一個。所以你可能想要包含一些信息作爲輸入字段,如唯一的ID字段,這將允許您獲取相應的模型並對其執行一些操作。