2013-03-19 109 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