如何在Umbraco中保留并获取列表?

时间:2014-08-27 16:01:42

标签: asp.net-mvc umbraco umbraco7

我是Umbraco的新手,想要在其中执行以下任务。

  1. 使用报名表格在电子数据库中存储电影列表。

  2. 获取电影的记录并将其显示在我有模板的页面中。

  3. 我不想使用JQuery,AngularJS等,而是想在服务器端执行此操作。

    任何指导都将受到重视。

    P.S。我对Umbraco基础知识及其部分视图宏有一些了解。

1 个答案:

答案 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数据库表分开。
  • 直接绕过Umbraco从此数据库表中检索影片值。

您可以使用Umbraco构建的Petapoco Database实例来完成此任务:

ApplicationContext.DatabaseContext.Database.Save(new Movie());

或者

var item = ApplicationContext.DatabaseContext.Database.Single<Movie>(movieId);

更好的方法是创建一个后备自定义部分,您可以在其中缓和提交的电影数据(存储在独立表中)并将电影内容从此处保存到内容树中。