1

我正在使用一个 asp.NET 网站——这是我不习惯的。我有一个包含大量asp:Textbox控件的页面,所有控件都带有runat="server",并且我有一个DataTable完整的值。基本上我想实现某种类似MVC 模型的功能,这样我就可以将值分配给每个textbox.

所以,有几个问题:

  1. 有没有办法以相当最佳的方式做到这一点?(不想使用会话等)
  2. 如果没有,任何人都可以提出更好的方法来做到这一点吗?

其中一个的一般外观textbox是这样的:

<asp:Textbox runat="server" class="number" name="ns_loanAmt" id="ns_loanAmt" value="???" />
4

1 回答 1

1

这个问题似乎很老了,出于某种原因它已经过编辑,所以可能有人仍然感兴趣。

我想知道为什么 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 中需要一些努力(尽管您可以更好地控制发生的事情)。

于 2014-04-06T19:14:12.230 回答