我是Umbraco的新手,想要在其中执行以下任务。
使用报名表格在电子数据库中存储电影列表。
获取电影的记录并将其显示在我有模板的页面中。
我不想使用JQuery,AngularJS等,而是想在服务器端执行此操作。
任何指导都将受到重视。
P.S。我对Umbraco基础知识及其部分视图宏有一些了解。
答案 0 :(得分:1)
为了澄清,我假设您希望在Umbraco的内容树中创建电影节点,例如在一个名为"所有电影"。
的页面下首先,允许您网站中的表单直接写入您的内容树是非常不良做法。这开启了一个全世界的问题,比如用户垃圾邮件你的垃圾邮件并用垃圾填满。
但是,为了使用MVC方法从Umbraco中的表单创建内容,您需要查看此处的文档http://our.umbraco.org/documentation/Reference/Templating/Mvc/。总而言之,您需要:
SurfaceController上用于处理表单发布请求的操作
public class MovieSurfaceController : Umbraco.Web.Mvc.SurfaceController
{
[HttpPost]
public ActionResult SaveMovie(SaveMovieViewModel model)
{
if (!ModelState.IsValid)
return CurrentUmbracoPage();
return RedirectToCurrentUmbracoPage();
}
}
您的表单需要发布到SurfaceController操作,例如
@using(Html.BeginUmbracoForm("SaveMovie", "MovieSurface")) { ... }
然后,在您的操作中,您需要访问ContentService
以创建和保存您的电影内容,定位到"所有电影"页面作为父页面。
Services.ContentService.CreateContent(
"Harold and Maude", allMoviesContent, "Movie", 0
);
然而,就像我说这是不好的做法,我只是举例说明。一个更好的更好的方法是:
您可以使用Umbraco构建的Petapoco Database
实例来完成此任务:
ApplicationContext.DatabaseContext.Database.Save(new Movie());
或者
var item = ApplicationContext.DatabaseContext.Database.Single<Movie>(movieId);
更好的方法是创建一个后备自定义部分,您可以在其中缓和提交的电影数据(存储在独立表中)并将电影内容从此处保存到内容树中。