【问题标题】:Implementing simple CRUD with OpenRasta and Web Forms使用 OpenRasta 和 Web 表单实现简单的 CRUD
【发布时间】:2012-02-09 20:12:02
【问题描述】:

我被要求在工作中研究 OpenRasta 作为 MVC ASP.NET 的替代品,作为起点,我尝试从 MVC ASP.NET 网站复制电影教程。

我真的很喜欢 OpenRasta 的 ReST 风格,到目前为止已经有了一个简单的数据库和一个基于 ID 的 GET 处理程序,形式为

            ResourceSpace.Has.ResourcesOfType<Movie>()
                .AtUri("/movie/{id}")
                .HandledBy<MovieHandler>()
                .RenderedByAspx("~/Views/MovieView.aspx");

我知道使用 POST 和 DELETE 可以让我从我的数据库中创建/更新和删除项目,但不幸的是,我不知道如何查看视图。

在 OpenRasta 文档中它说:

When you use an aspx page as a view in OpenRasta, you essentially create a template to
generate content. As such, postbacks and events are not supported.

我在这里可能真的很笨,但我能否以 OpenRasta 要求的方式从 ASP.NET 页面进行 POST 和 DELETE?我正在使用代码隐藏页面,但这不是我所关注的。

我对 ASP.NET 不太熟悉(很久没有做过),所以我可能遗漏了一些明显的东西,但非常感谢一些正确方向的指针。

【问题讨论】:

    标签: asp.net crud openrasta


    【解决方案1】:

    这意味着不支持 asp.net webforms 中的回发模型(也就是 asp.net webforms 基础结构创建一个大量表单标签以将 asp.net 特定数据连续回发到页面的行为)不受支持,因此,您可能用于在 Web 表单控件上使用的任何事件都将不起作用。

    如果您习惯了 MVC 样式的交互,那么您知道如何使用表单标签,因此您可以照常创建新电影。

    <form method="post">
      <fieldset>
        <input type="text" name="Name" />
        <input type="submit" />
      </fieldset>
    

    另一种方法是使用 webforms 引擎在代码中完成

    <% using(scope(Xhtml.Form<Movie>().Post())) { %>
       <%= Xhtml.TextBox<Movie>(_=>_.Name) %>
    <% } >
    

    还有你的处理程序代码

    public Movie Post(Movie movie) {
      // create the movie instance in your db or whatever
      return new OperationResult.SeeOther { RedirectLocation = movie.CreateUri() };
    }
    

    代码在我的脑海中编译,在放入编译器之前可能需要进行实际检查。

    请注意,如果可以的话,离开网络表单引擎可能是个好主意,还有更好的选择(剃须刀、火花,无论你决定插入什么)。

    【讨论】:

    • 我找到了 OpenRasta Razor 编解码器,有没有关于如何使用它的文档?我应该在哪个项目类型中使用它,ASP.NET Web 表单还是 MVC ASP.NET 项目?
    • 目前还没有文档,因为它正在迁移到一个新的所有者,我只是将它打包。该代码有一个演示项目来检查连接它所需的配置。支持松散和编译的视图,因此您的视图不一定需要一个 asp.net 项目,但像 resharper 这样的工具可能会坚持不让您在没有正确项目类型的情况下正确访问模板。
    猜你喜欢
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    相关资源
    最近更新 更多