繁体   English   中英

如何在ASP.net网站中实现视图模型功能

[英]How to implement View Model functionality in ASP.net Web Site

我正在使用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="???" />

这个问题似乎已经很老了,由于某种原因,它已经过编辑,因此也许有人可能仍然对此感兴趣。

我想知道为什么OP没有考虑内置的Web表单绑定。 尽管如今我主要使用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窗体绑定始终有效,并且由于具有自动视图状态管理,因此特定方案甚至比手动的,类似于MVC的状态管理要简单得多。 例如,列表视图中提供的插入和编辑模板很容易切换,这在普通MVC中需要付出一些努力(尽管您可以更好地控制发生的事情)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM