我正在使用asp.NET网站 - 这是我不习惯的。我有一个包含大量asp:Textbox
控件的页面,所有控件都有runat="server"
,并且我有DataTable
个值。基本上我想实现某种 MVC类似模型的功能,这样我就可以为每个textbox
分配值。
所以,有几个问题:
- 有没有办法以相当最好的方式做到这一点? (不想使用会话等)
- 如果没有,有人可以提出更好的方法吗?
醇>
其中一个textbox
的一般外观是:
<asp:Textbox runat="server" class="number" name="ns_loanAmt" id="ns_loanAmt" value="???" />
答案 0 :(得分:1)
这个问题似乎已经很老了,出于某些原因它已被编辑,所以可能有人仍然感兴趣。
我想知道为什么OP没有考虑内置的int表单绑定。虽然现在我主要使用MVC,但多年来我们都开发了几十个使用ASP.NET数据绑定的应用程序,它肯定有效。
在这种特殊情况下,我会创建一个类作为单个文本框的模型。该类将包含值,CSS类,可能还包含其他一些属性。
public class RowModel
{
public string Text { get; set; }
public string CSSClass { get; set; }
...
}
然后我会有一个转发器,一个gridview或一个listview,我会在行模板中放一个文本框。
<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
并以声明方式绑定。
然后,在每次回发后,可以读取POSTed值列表并将其放回数据库。
ASP.NET Web Forms绑定始终有效,并且由于自动视图状态管理特定方案甚至比手动,类似MVC的状态管理简单得多。例如,列表视图中提供的插入和编辑模板很容易切换,需要在普通MVC中进行一些操作(尽管您可以更好地控制发生的事情)。