【发布时间】:2016-08-12 09:21:32
【问题描述】:
我正在 Kentico 开发一个 asp.net 项目。
目前我创建了一个模型,我们称之为 PartnerModel。它包含一个 TreeNode 类型的私有变量,它基本上以不同的形式保存相同的信息。
我希望能够将 PartnerModel 的实例显式转换为 TreeNode。 这应该在运行时发生(在 WebForms 用户控件中)。
编辑:我不是在寻找“更好”的方法来实现我所要求的目标。这更像是一个没有明确用例的通用目的。下面的代码正是我试图做的。我只是想知道,是否可以在运行时显式转换我的模型,如果可以,我该怎么做。
这可能吗?我只是得到一个 InvalidCast 异常。
PartnerModel.cs
public class PartnerModel
{
#region Public Properties
public TreeNode Node { get { return node; } }
...
public static explicit operator TreeNode(PartnerModel model)
{
return model.node;
}
}
PartnerOverview.ascx
...
<cms:BasicRepeater runat="server" ID="RepeaterPartner">
<ItemTemplate>
<a href="<%# ((CMS.DocumentEngine.TreeNode)Container.DataItem).RelativeURL %>">
...
【问题讨论】:
-
您可以解析它,而不是“强制转换”。
-
确实可以,但这不是我想要做的。
-
你确定
Container.DataItem真的是PartnerModel吗?您是否尝试过先将其转换为PartnerModel? -
异常状态:“消息:无法将'CMSApp.Models.PartnerModel'类型的对象转换为'CMS.DocumentEngine.TreeNode'类型。”。所以是的 - 我有点确定它是:)
标签: c# asp.net webforms kentico ascx