【问题标题】:Razor C# - Get data from databaseRazor C# - 从数据库中获取数据
【发布时间】:2013-01-22 13:37:22
【问题描述】:

我正在使用 WebMatrix,我创建了一个数据库并放置了一个包含几行数据的表。我可以通过WebGrid 连接到它并获取数据,但它只提供了一种使用表格输出数据的方法。

这是我的“shows.cshtml”代码:

@{
    var db = Database.Open("TVPort");
    var shows_data = db.Query("SELECT * FROM shows");
    var shows_grid = new WebGrid(source: shows_data);
}

我想要做的是枚举查询返回的每一行,并对每一列的值做任何我想做的事情。但是WebGrid 只允许您在表格中输出数据。我今天才开始使用 WebMatrix 和 Razor 语法。

另外(这里的附带问题,认为这不足以成为自己的问题),有没有办法为我的“shows.cshtml”页面制作 C# 代码文件?在 Visual Web Developer 2010 中,每个页面都有一个“page.aspx”文件和一个“page.aspx.cs”,其中“page.aspx.cs”文件允许您在页面中使用自定义函数或执行任务页面加载时。在 WebMatrix 中使用 CSHTML 是否有类似的行为?还是所有代码都应该与实际页面内联?

【问题讨论】:

    标签: c# asp.net sql-server razor webmatrix


    【解决方案1】:

    Working With Data : ASP.net找到答案

    @foreach(var row in db.Query("SELECT * FROM shows")) {
      <em>@row.title</em> - Cast: @row.cast
    }
    

    【讨论】:

    • 你知道你正在做的事情与 MVC 中关注点分离的整个想法相矛盾,是吗?
    • @OferZelig 看,我对 ASP.net 很陌生。我从 12 岁开始使用 PHP 和 MySQL,直到现在我还没有使用过另一种 Web 开发语言,所以我仍然掌握了一些东西。我什至不知道您所说的“关注点分离”是什么意思。我是一个 18 岁的人,只是为了好玩而制作网站。现在,如果你愿意告诉我“关注点分离”的概念是什么,我正在做什么来反驳它,以及我应该做些什么来解决这个矛盾。
    • @BrandonMiller 我认为有些混乱。您可能是对的,WebMatrix 中没有控制器,并且您链接的页面确实在一个文件中显示 html、SQL 和 C#。转储那些废话,它是新的 DreamWeaver 或 FrontPage。只需下载 Visual Studio C# Express 并查看成熟的 ASP.NET MVC 4。这个 WebMatrix 教的一切都错了。
    • @CodeCaster 呃,我问的另一个问题的答案告诉我应该使用 WebMatrix。所以我去了'' -> '得到答案' -> '关注答案' -> '关于答案' -> '被告知答案是错误的' -> '重新开始'。就好像无论我接受谁的回答,我仍然总是错的。我花时间从答案中安装软件只是为了被告知我不应该使用它。
    • @BrandonMiller 这不太适合 MVC。控制器与 WebForms 世界中的代码隐藏文件(.aspx.cs 文件)并不完全一样。您经常将一个控制器用于多个视图(这绝对不总是正确的,也不是规则,而只是一个常见的用例)。而且您不会从.cshtml 调用您的逻辑。您在控制器中进行所有处理(或其他地方,但为了简单起见,我们坚持这样做)并将视图交给一个纯对象来显示。视图应该只访问对象的属性。不是ifs,也没有数据访问权限。
    【解决方案2】:

    你走错路了! MVC 模式在将数据逻辑与实际内容分离方面有其优势,现在您正在视图中检索新数据(这不会给控制器留下太多控制权)!

    查看http://www.asp.net/mvc 以获得一些关于如何使用 ASP.Net MVC 以及如何构建类和文件的精彩教程(它将回答您的两个问题)。如果您之前使用 PHP 并直接在同一页面中编写每个查询,这可能看起来有点过头了,但相信我,您创建的代码会更干净,并且使用 ASP.Net MVC 更容易维护。

    【讨论】:

    • 我没有使用 MVC。我正在使用 WebMatrix 网页。没有控制器的概念。我没有在我的问题中说我在使用 MVC。
    【解决方案3】:

    关于您的附带问题,我想说的是,使用 Razor 框架您不能拥有代码隐藏文件。它将服务器端代码和客户端代码混合在一起。如果你想要一个代码隐藏文件,那么你可以在 Visual Studio 上使用没有剃刀视图引擎的 Asp.net 网页。

    【讨论】:

      【解决方案4】:

      对于附带的问题,我相信 @function{"insert code inside this block"} 将允许您在页面内创建自定义函数。希望这可以帮助其他可能有类似问题并最终来到这里的人。信不信由你,有一些很棒的文档说明如何开始 @http://www.asp.net/get-started。只需阅读教程即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        相关资源
        最近更新 更多