我被要求在工作中将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并不熟悉(多年来都没有做过),所以我可能会遗漏一些明显的东西,但我真的很欣赏正确方向的一些指示。
答案 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() };
}
代码在我脑海中编译,在放入编译器之前可能需要进行实际检查。
请注意,如果可以的话,离开网页表格引擎可能是一个好主意,有更好的选择(剃须刀,火花,无论你决定插入什么)。