【问题标题】:WebMatrix - Create controller for CSHTML pageWebMatrix - 为 CSHTML 页面创建控制器
【发布时间】:2013-02-07 06:37:21
【问题描述】:

我正在使用 WebMatrix 开发一个网站。我最近问了一个关于从数据库中获取数据的问题。当我尝试在我的 CSHTML 页面中编写数据逻辑时,我很快就被告知这样做是错误的,因为我违背了 MVC 的原则。问题是,在 Visual Studio 2010 中,MVC 对我来说很容易,我在每个页面都有一个视图 page.aspx 和一个控制器 page.aspx.cs,但在 WebMatrix 中,我使用的是 Razor C# 语法,所以我的页面只是一个单个page.cshtml 文件。当我创建一个新站点或一个新文件时,没有 MVC 模板,所以我必须自己创建视图和控制器。

如何在page.cshtml 中显示使用控制器从数据库中获取的数据(我的控制器会是“page.cshtml.cs”吗?)?换句话说,如何将页面数据逻辑与其实际内容/标记/视图分开?

【问题讨论】:

    标签: c# asp.net asp.net-mvc razor webmatrix


    【解决方案1】:

    我认为您将 ASP.NET MVC 与 WebMatrix WebPages 混淆了。您只使用所有代码都在 Razor 模板中的网页。没有控制器的概念。

    但即使在 WebMatrix 中,您也可以将数据访问代码分隔在单独的文件中。创建一个名为~/App_Code 的特殊文件夹,在此文件夹中您可以创建.NET 类。例如,您可以有一个 DataAccess.cs 文件,您可以在其中放置数据访问逻辑。您还可以引用您创建的外部程序集。例如:

    @using MyNamespace
    
    @{
        DataAccess myClass = new DataAccess();
        ...
    }
    

    【讨论】:

    • 我就是这么想的,但是对我的问题发表评论的人因为 MVC 使用不当而将我钉在十字架上,即使我确信我什至没有使用 MVC,但它说服了我。
    • 要么这些人不知道 ASP.NET MVC 和 WebMatrix WebPages 之间的区别,要么你没有在你的问题中解释这一点,或者没有使用适当的标签(就像在这个问题中一样- 您使用了与您的问题无关的asp.net-mvc 标签)。无论哪种方式,现在您都知道其中的区别了。
    • 我在标签中使用了“WebMatrix”和“Razor”。除了对我不知道 MVC 是如何工作的居高临下的评论外,我什么也没得到。无论如何,谢谢你的澄清。另外,如果我在DataAccess.cs 中创建了一个名为MyFunc() 的函数,我可以从任何页面调用它吗? MyFunc() 能输出 HTML 吗?还是 C# 文件中不允许使用标记?
    • 首先,您不能在 C# 文件中声明函数。您声明类,这些类可以包含函数。如果您在 C# 文件中定义了一个类,则可以从 Razor 页面调用它。但是你不能返回标记,这不是 C# 应该做的。您应该只返回模型和其他类,并在您的 Razor 页面中根据此函数调用的结果构建标记。
    • 是的,玩过之后我就明白了,这是我一开始就应该做的。
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 2012-06-02
    相关资源
    最近更新 更多