2013-03-19 74 views
0

我想教自己的MVC,並且我遇到了背後的代碼問題。在MVC中綁定Gridview的數據綁定

在我當前的問題中,我試圖將數據綁定到gridview。現在,我已經能夠通過在我的aspx中創建page_load方法來做到這一點。

<script language="CS" runat="server"> 
void Page_Load(object sender, System.EventArgs e) 
{ 
    grdMyGrid.DataSource = Model.getAllRecords(); 
    grdMyGrid.DataBind(); 
} 
</script> 

但是,在我看來這是行不通的。過去一年我一直強迫自己確保所有綁定都發生在代碼後面,並且我發現的所有MVC示例都顯示在aspx中做了一個數據綁定! (儘管它們都僅限於文本框)。那麼做這件事的正確方法是什麼?

謝謝

回答

2

這裏有一些項目。在通過MVC理想的世界中,你的模型應該只是數據的持有者。 I.E.沒有方法,邏輯等,這些都應該由你的控制器來處理。 (我強烈建議閱讀K. Scott Allen在odetocode.com的博客中的文章/條目,以瞭解MVC的正確使用方法)。也就是說,我必須詢問模型爲什麼有一個方法。

更多的是你的問題,雖然:MVC頁面真的,真的不應該使用Web窗體和其中的控件。我只是想鏈接到這個問題:How to use gridView in Mvc without adding form runat server?

那裏接受的答案列出了一種方法來處理這個問題,另一種選擇是使用顯示模板,您可以在這裏找到一個體面的教程:http://haacked.com/archive/2010/05/05/asp-net-mvc-tabular-display-template.aspx

+0

該模型沒有方法,我將該page_load添加到aspx中。 – Limey 2013-03-20 13:52:58

+0

我更多地指的是Model.getAllRecords()。如果你真的想進入MVC,你可能想看看使用.cshtml視圖而不是.aspx頁面。如果你設置一個真正的Model(作爲ViewModel類),View(作爲.cshtml)和Controller(作爲控制器類),保持功能獨立變得更加容易。它也很適合使用異步AJAX調用。如果你有VS 2010或者12,並且想看看我的意思是用Razor視圖開始一個新的MVC 3 Web項目,並看看它的設置方式。我推薦剃刀,因爲它簡化了你的觀點中的所有事情。 – Kerfuffle 2013-03-20 16:01:07

+0

無法再編輯我的最後一條評論,但我應該將Model(作爲ViewModel類)更正爲Model(作爲單獨的類)。我很習慣我的做事方式(我有一個基本的VM類,它有我自己反覆使用的屬性),我只是把它放在裏面。我覺得有必要澄清一下,以免讓任何人讀到困惑。 – Kerfuffle 2013-03-20 16:11:28