gpt4 book ai didi

c# - Orchard 在驱动程序中保留 View 模型

转载 作者:行者123 更新时间:2023-11-30 22:04:52 25 4
gpt4 key购买 nike

我有一个包含多个部分的内容类型,其中一个部分能够添加一个议程,该议程由带有日期、时间、标题和富文本描述的多个点组成。换句话说,是 1-n 关系。这部分使用 View 模型来提交对象列表。用户在提交之前可能已经在议程上花费了一些时间,如果任何其他部分未验证他们当前在议程上的所有工作。这并不意外,因为在重新加载页面时会创建一个新的 View 模型。

但是我不禁注意到部分中的任何信息都将保留,我希望有一种方法也可以将数据保留在 View 模型中。

驱动有以下方法:

protected override DriverResult Editor(AgendaPart part, dynamic shapeHelper)
{
return ContentShape("Parts_Agenda_Edit",
() => shapeHelper.EditorTemplate(
TemplateName: "Parts/Agenda",
Model: BuildEditorViewModel(part),
Prefix: Prefix));
}

protected override DriverResult Editor(AgendaPart part, IUpdateModel updater, dynamic shapeHelper)
{
var model = new AgendaViewModel();
updater.TryUpdateModel(model, Prefix, null, null);

if (part.ContentItem.Id != 0)
{
_agendaService.CreateUpdateAgenda(model, part.ContentItem);
}

return Editor(part, shapeHelper);
}

提交时我得到这样的 View 模型:

var model = new AgendaViewModel();
updater.TryUpdateModel(model, Prefix, null, null);

加载编辑器以获取任何预先存在的 View 模型数据时,是否有任何“类似”的操作可以完成?如果没有,那么也欢迎任何其他建议。

最佳答案

ASP.NET MVC 提供了一种跨请求持久保存此类数据的机制:TempData。你可以在这个 Controller 中看到这样的例子:https://bitbucket.org/bleroy/nwazet.commerce/src/b558d7988c4f6c66cdd0b2dd6b533d8ad3bfbceb/Controllers/StripeController.cs?at=default

我还想说明 TryUpdateModel 没有做任何持久性工作。它所做的是将客户端提交的数据(通常是表单数据)映射到您传入的对象上。部分记录用于跟踪更改,然后可以由 Orchard 自动保存。

关于c# - Orchard 在驱动程序中保留 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com