- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用以下代码更新特定部分:
var nationalPart = _contentManager.Get<NationalPart>(Id);
nationalPart.Name = part.Name;
我已经完成了这个。但现在它不起作用。即使我显式调用 contentManager.Flush()
,但仍然没有成功。谁能帮我这个?提前致谢。
编辑:我找到了问题的根源! 当我发出更新 contentPart 的 JSON 请求时。内存中的版本正在更新,但它没有将结果反射(reflect)到 db。现在我们离答案更近了一步。但是是什么阻止了 session 更新数据库?
编辑2:
这是我的处理程序的代码:
public NationalPartHandler(IRepository<NationalPartRecord> repository)
{
Filters.Add(StorageFilter.For(repository));
}
这是 Controller Action 的代码:
[GridAction(EnableCustomBinding = true)]
public JsonResult UpdateNational(NationalViewModel Model, GridCommand Command)
{
if (!ModelState.IsValid)
return new JsonResult { Data = "error" };
var NationalPart = _contentmanager.Get(Model.Id).As<NationalPart>();
NationalPart.Record = new NationalPartRecord();
NationalPart.Record.MapFrom<NationalPartRecord, NationalViewModel>(Model);
_soccerService.UpdateNational(NationalPart);
return NationalsListJson(Command);
}
最后是服务代码:
public void UpdateNational(NationalPart part)
{
var nationalPart = _contentManager.Get<NationalPart>(part.Id);
nationalPart.Name = part.Name;
_contentManager.Flush();
}
最佳答案
删除行
NationalPart.Record = new NationalPartRecord();
底层记录是自动生成并被代理的,因此 NHibernate 可以在您对其进行任何更改时将数据保存到数据库中。您永远不想替换它,否则不会保存任何数据。
UpdateNational
是多余的,您可以删除它 - 您已经设置了 part.Name
(如果我理解正确,应该映射到 part.Record.Name)调用 record.MapFrom
。
所以正确的版本应该是这样的
[GridAction(EnableCustomBinding = true)]
public JsonResult UpdateNational(NationalViewModel Model, GridCommand Command)
{
if (!ModelState.IsValid)
return new JsonResult { Data = "error" };
var part = _contentmanager.Get(Model.Id).As<NationalPart>();
part.Record.MapFrom<NationalPartRecord, NationalViewModel>(Model);
return NationalsListJson(Command);
}
鉴于您的 NationalPart 看起来类似于:
public NationalPart : ContentPart<NationalPartRecord>
{
public string Name {
get { return Record.Name; }
set { Record.Name = value; }
}
}
总结 - 如果你想在 Orchard 中存储一些数据,你需要做的就是设置记录的某些属性的值,仅此而已。数据将在请求结束时保留(或更早,如果您调用 IContentManager.Flush()
)。
关于c# - 在 Orchard 中更新 ContentItem 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897537/
我正在为 Orchard CMS 编写一个模块,其中包含一个实现 IOrchardShellEvents 接口(interface)的事件处理程序类。 当使用核心配方设置 Orchard 的常用实现并
我想在 Orchard 中创建一个已经内置在 ASP.NET MVC5 中的网站主题。 我是否需要将我的标记从以前的 Layout.cshtml 页面复制到 orchard themes/MyThem
我们正在考虑获取 Orchard 站点上内容的 RSS,然后使用 C# 对其进行解析,以将其粘贴到我们自己的数据库中。为此,我们需要 RSS 来获取我们自定义类型的每个字段。现在,当我获得投影的 RS
我已经开始在其中一个网站上使用Orchard CMS,并注意到我的首页的初始加载时间相当长。我没有增加太多要谈论的内容,因此我所看到的与开箱即用的体验非常接近。我怀疑这与在共享主机上使用Sql Ser
文档( here 和 here )明显缺乏关于如何解析模块中的引用的信息: References Resolution (TODO: Explain how Orchard figures out r
我在 Orchard 中构建了一个自定义模块,用于创建新的部件、类型和自定义事件,但我正在努力解决我需要做的最后一部分,即创建与 相关的所有内容项的副本特定的父项。 例如,当有人创建“贸易展览”(我的
我非常是 Orchard 的新手,我仍在努力理解所有不同的术语,所以这里断章取义的任何东西都不是故意的。我正在尝试做一些类似于 here on SO 发布的事情,但没有公认的答案。 在常规站点(非博客
我正在为 Orchard 开发自定义模块。我想在我的自定义模块中的一个页面上使用小部件。 如何将小部件添加到页面(将其显示为局部 View ?如何引用它?)? 目标是创建一个主页作为一个模块,当您激活
我是 Orchard 模块开发的新手。我创建了一个模块。当我尝试保存数据时。我在保存数据之前使用此代码 public ActionResult Create(FormCollection in
我创建了一种新的内容类型,即产品。 还有产品列表。 当我保存一个新的产品项目,并从列表中选择产品时,Orchard 告诉我该产品已正确保存,但奇怪的是,[添加到] 组合框又变回“无”,并且该产品实际上
我是 Orchard CMS 的新手,我已经开始编写我的第一个模块。我一直在寻找一种方法来检测我的模块何时从根网站初始化但没有成功! 一位同事建议使用 WebActivator 和 PreApplic
我非常是 Orchard 的新手,我仍在努力理解所有不同的术语,所以这里断章取义的任何东西都不是故意的。我正在尝试做一些类似于 here on SO 发布的事情,但没有公认的答案。 在常规站点(非博客
我正在为 Orchard 开发自定义模块。我想在我的自定义模块中的一个页面上使用小部件。 如何将小部件添加到页面(将其显示为局部 View ?如何引用它?)? 目标是创建一个主页作为一个模块,当您激活
我正在对一个相当大的网站进行最后的润色,该网站大量使用分类法以及引用它们的许多自定义内容类型。 目前配置为在功能相对强大的专用 IIS 机器上使用 SQL Server 2008R2。 它一直表现得很
是否可以获取 orchard 中内容项的分类术语名称?我使用 Designer 工具模块,但在其中找不到它。 最佳答案 已解决,'Category' 是我的分类法的名称: @{ var
我有一个带有自定义字段“NewsDate”(DateTimeField) 和“Active”(BooleanField) 的内容类型“News” 现在我需要在 NewsDate 之前获得 3 个活跃的
是否有一种简单的方法可以将一种文化与 Orchard 中的租户联系起来。目的是建立一个具有专用于特定文化的子域(或域)的网站。使用 umbraco 很容易实现这一点,这也是我尚未开始使用 Orchar
我有一个使用 Orchard CMS 完成的项目。所有功能都是通过模块实现的。搜索模块直到几天前还在工作,但突然停止工作,“没有任何理由”。 问题是我无法重建/更新索引。当我运行索引时,它只会索引字段
我有一个包含分类字段(功能)的 contentType(产品)。分类术语(产品特征术语)已定制为包括图像字段和描述字段。 我希望产品详细信息 View 显示术语中的图像以及名称,但我找不到访问它的属性
我有一个内容部分添加了一对一的关系: public class AddResellerPart : ContentPart { private readonly LazyField _rese
我是一名优秀的程序员,十分优秀!