使用OpenRasta和Web窗体实现简单的CRUD

时间:2012-02-09 20:12:03

标签: asp.net crud openrasta

我被要求在工作中将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页面发布和删除?我正在使用代码隐藏页面,但这不是我所关注的。

我对ASP.NET并不熟悉(多年来都没有做过),所以我可能会遗漏一些明显的东西,但我真的很欣赏正确方向的一些指示。

1 个答案:

答案 0 :(得分:1)

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

如果你已经习惯了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() };
}

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

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