这个问题似乎很老了,出于某种原因它已经过编辑,所以可能有人仍然感兴趣。
我想知道为什么 OP 没有考虑内置的网络表单绑定。虽然现在我主要使用 MVC,但多年来我们都使用 ASP.NET 数据绑定开发了几十个应用程序,而且它确实有效。
在这种特殊情况下,我将创建一个作为单个文本框模型的类。该类将包含值、CSS 类,可能还有一些其他属性。
public class RowModel
{
public string Text { get; set; }
public string CSSClass { get; set; }
...
}
然后我会有一个中继器、一个网格视图或一个列表视图,我会在行模板中放置一个文本框。
<asp:ListView ID="listView1" runat="server">
...
<ItemTemplate>
<asp:TextBox id="textBox" runat="server"
cssclass="<%# CSSClass %>" Text="<%# Text %>" />
</ItemTemplate>
然后,在后面的代码中,我只需将模型实例列表绑定到可绑定控件。
List<RowModel> rowList;
...
if ( !this.IsPostBack )
{
listView1.DataSource = rowList;
listView1.DataBind();
}
甚至以ObjectDataSource
声明方式创建和绑定。
然后,在每次回发时,可以读取已发布值的列表并将其放回数据库中。
ASP.NET Web 窗体绑定始终有效,并且由于自动视图状态管理,特定场景甚至比手动、类似 MVC 的状态管理简单得多。例如,列表视图中提供的插入和编辑模板很容易切换,这在纯 MVC 中需要一些努力(尽管您可以更好地控制发生的事情)。