我正在创建一个 dnn 模块。内容取决于 url 中的参数。
我希望能够在“编辑内容”模式下编辑此内容。但是,当我去编辑内容时,无法再访问 url 中的参数,因为它是父文档。我如何将这个值从 view.ascx 传递给 edit.ascx?
我正在创建一个 dnn 模块。内容取决于 url 中的参数。
我希望能够在“编辑内容”模式下编辑此内容。但是,当我去编辑内容时,无法再访问 url 中的参数,因为它是父文档。我如何将这个值从 view.ascx 传递给 edit.ascx?
尝试将参数存储在 cookie 或本地存储中。然后你应该可以访问它。当然,用户将能够修改它,但您可以通过存储服务器端加密或类似的东西来检查用户是否没有修改它。
我希望我能正确理解这个问题。
要将参数从视图传递到编辑控件,首先应确保它们在模块定义中正确注册。您的默认视图应该有一个空的控制键,并且您的编辑应该使用控制键注册,例如“addit”。
在视图控件和编辑控件之间创建链接时,请使用 PortalModuleBase 的 EditUrl() 方法。传递参数时,例如要加载到编辑控件中的项目的 id,可以将它们作为参数传递给 EditUr 方法。
示例(在我的 view.ascx.cs 中):
lnkEdit.NavigateUrl = EditUrl("id", "16", "addedit");
这将为 edit.ascx 分配一个模块视图链接(假设添加了定义中的 controlkey),并传入值为 16 的 url 参数“id”。
有关如何进行 DNN 模块视图和导航的完整课程,请参阅我的 DNN 模块视图教程。
一种解决方法是有一个用户输入此参数的字段。但我知道这不是一个很好的解决方案。我猜您将不得不覆盖 dotnetnuke 核心来执行此操作(是的,我知道这很糟糕)。