Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在Umbraco中持久化和获取列表?_Asp.net Mvc_Umbraco_Umbraco7 - Fatal编程技术网

Asp.net mvc 如何在Umbraco中持久化和获取列表?

Asp.net mvc 如何在Umbraco中持久化和获取列表?,asp.net-mvc,umbraco,umbraco7,Asp.net Mvc,Umbraco,Umbraco7,我是Umbraco的新手,希望在其中执行以下任务 使用条目表单在数据库中存储电影列表 获取电影的记录并将其显示在我有模板的页面中 我不想使用JQuery、AngularJS等,而是想在服务器端使用它 任何指导都将不胜感激 另外,我对Umbraco基础知识及其局部视图宏有一些了解。为了澄清,我假设您希望在Umbraco的内容树中创建电影节点,例如在名为“所有电影”的页面下 首先,允许网站中的表单直接写入内容树是非常糟糕的做法。这就带来了一系列问题,比如用户向数据库发送垃圾邮件,并将其填满垃圾 但是

我是Umbraco的新手,希望在其中执行以下任务

  • 使用条目表单在数据库中存储电影列表

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

  • 我不想使用JQuery、AngularJS等,而是想在服务器端使用它

    任何指导都将不胜感激


    另外,我对Umbraco基础知识及其局部视图宏有一些了解。

    为了澄清,我假设您希望在Umbraco的内容树中创建电影节点,例如在名为“所有电影”的页面下

    首先,允许网站中的表单直接写入内容树是非常糟糕的做法。这就带来了一系列问题,比如用户向数据库发送垃圾邮件,并将其填满垃圾

    但是,为了使用MVC方法从Umbraco中的表单创建内容,您需要查看此处的文档。但要总结一下,您需要:

    • SurfaceController上用于处理表单post请求的操作

      public class MovieSurfaceController : Umbraco.Web.Mvc.SurfaceController
      {
          [HttpPost]
          public ActionResult SaveMovie(SaveMovieViewModel model)
          {    
              if (!ModelState.IsValid)
                  return CurrentUmbracoPage();
      
              return RedirectToCurrentUmbracoPage();
          }
      }
      
    • 您的表单需要发布到您的SurfaceControl操作,例如

      @using(Html.BeginUmbracoForm("SaveMovie", "MovieSurface")) { ... }
      
    • 然后,在您的操作中,您需要访问
      ContentService
      来创建和保存您的电影内容,将“所有电影”页面作为父页面

      Services.ContentService.CreateContent(
          "Harold and Maude", allMoviesContent, "Movie", 0
      );
      
    然而,就像我说的,这是一个糟糕的做法,我给你们展示的只是一个例子。更好的方法是:

    • 将提交的值存储在单独的数据库表中,即与核心Umbraco数据库表分开
    • 直接绕过Umbraco从该数据库表检索电影值
    您可以通过使用Umbraco构建的Petapoco
    数据库
    实例来实现这一点:

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

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

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

    是否要将as umbraco文档存储在树中的数据库中?您是否已经有一个数据库和充满数据的表?你是在问集成问题,还是更确切地说是如何开始使用umbraco?@dampee我是在问如何开始使用umbraco。我想使用表单将列表存储在Umbraco的数据库中,但还没有数据库。然后-问题的主要部分-加载一些记录并在一个页面的列表中显示它们(就像GridView一样)。非常感谢您,但我也希望得到问题第二部分的指导。无论如何,谢谢你;你的答案很有教育意义,也很有用。这很简单!如果将电影存储为内容,则只需通过视图中的标准
    RenderModel
    对象访问它们。如果要将它们作为电影记录存储在数据库中,则只需查询数据库并在模型中向下传递即可。如果我不想使用文档树中的(添加)节点,而是想将记录插入数据库,该怎么办。你能帮忙吗?不是真的,因为这太模糊了,而且你还没有表现出任何先尝试的迹象。然而,这个过程与我所描述的没有什么不同,而是将我正在写入Umbraco的API的地方替换为写入数据库。您必须选择一个数据层/orm(例如EF、NHibernate、Petapoco、LinqToSQL、Ado.Net等),然后使用它来写入数据库。我添加了一些代码来说明如何使用Umbraco的Petapoco内部实现来保存和检索数据库中的强类型数据。这可以在控制器中完成,然后作为视图模型的一部分传递。
    var item = ApplicationContext.DatabaseContext.Database.Single<Movie>(movieId);