2012-11-21 50 views
1

我正在使用一個asp.net網站 - 我不習慣。我有一個頁面,有大量的asp:Textbox控件,全部用runat="server",我有一個DataTable完整的值。基本上我想實現一些類似於MVC模型的功能,所以我可以將值分配給每個textbox如何在ASP.net中實現查看模型功能網站

所以,有幾個問題:

  1. 是否有某種方式在一個相當的最佳實踐方式來做到這一點? (不想使用會話等)
  2. 如果沒有,任何人都可以提出一個更好的方法來做到這一點?

textbox之一的一般看是這樣的:

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

您是否嘗試過使用代碼隱藏文件並將邏輯放入page_load? –

+0

@DigitalD想到了它,但我不想手動設置每個值,如果我不必。這就是我要做的事情,如果沒有什麼「更乾淨」的事情要做,儘管 –

+0

MVC具有內置模型綁定器的強大功能,普通的ASP.net web表單卻沒有。 –

回答

1

的問題似乎是很老,由於某種原因已編輯,以便有人可能仍然有興趣。

我想知道爲什麼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的狀態管理更簡單。例如,在listview中提供的插入和編輯模板很容易切換,這需要在普通的MVC中做一些工作(儘管你對發生的事情有很多更好的控制)。

相關問題