2012-02-09 51 views
0

我被要求将OpenRasta作为MVC ASP.NET在工作中的替代方案,并且我试图从MVC ASP中复制Movies教程。 NET网站。使用OpenRasta和Web Forms实现简单的CRUD

我真的很喜欢OpenRasta的REST风格,至今已经有一个简单的数据库和GET基于由ID的处理程序,在

  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

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

如果您习惯了MVC风格的交互,您将知道如何使用表单标签,以便像往常一样创建新电影。

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

另一种方法是使用web表单引擎

<% 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() }; 
} 

代码在我的脑海编译做的代码,可能是之前需要现实检查放入一个编译器。

请注意,如果可以的话,最好远离webforms引擎,还有更好的选择(剃刀,火花,无论你决定插入什么)。

+0

非常感谢您的信息! OpenRasta现在是否支持Razor? – 2012-02-10 09:35:23

+0

我找到了OpenRasta Razor编解码器,有没有关于如何使用它的任何文档?我应该使用哪种prjoect类型,ASP.NET web表单或MVC ASP.NET项目? – 2012-02-10 13:35:29

+0

目前还没有文档,因为它正在迁移到一个新的所有者,我只打包它。该代码有一个演示项目来检查所需的配置以将其挂起。支持松散和编译的视图,因此您不一定需要为您的视图提供一个asp.net项目,但是像resharper这样的工具可能会坚持在没有正确的项目类型的情况下不会给您适当的模板访问权限。 – SerialSeb 2012-02-14 11:24:45