2010-12-15 92 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字段,这将允许您获取相应的模型并对其执行一些操作。