Sitefinity小部件对象引用未设置为对象的实例

时间:2012-12-14 09:19:47

标签: user-controls widget sitefinity-4

我创建了一个仅包含iframe和iframe的Sitefinity小部件。

<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="ApplicationFrame.ascx.cs"
Inherits="MyProject.Web.Ui.Customized.EmbeddedApplications.ApplicationFrame" %>

<iframe runat="server" id="ApplicationIFrame" height="250" width="250" scrolling="no" frameborder="0" seamless="seamless" src=""></iframe>

在小部件的Page_Load中,我试图访问服务器端iframe的任何属性,但我总是得到“对象引用未设置为对象的实例”。

这是C#

namespace MyProject.Web.Ui.Customized.EmbeddedApplications
{
        [ControlDesigner(typeof(ApplicationFrameDesigner))]
        public partial class ApplicationFrame : System.Web.UI.UserControl
        {
            public string FrameSourceUrl {get;set;}
            public string FrameHeight { get; set; }
            public string FrameWidth { get; set; }
            protected void Page_Load(object sender, EventArgs e)
            {
                //set the values of the iframe to the current properties
                ApplicationIFrame.Attributes["src"] = FrameSourceUrl;
                ApplicationIFrame.Attributes["height"] = FrameHeight;
                ApplicationIFrame.Attributes["width"] = FrameWidth;
            }
        }
} 

我最近将项目从网站更改为Web应用程序,但这似乎没有以任何方式影响项目。

除此之外,我无法理解为什么无论我做什么,这个异常都会被抛出。

其他人都知道问题可能是什么?

谢谢, 雅克

1 个答案:

答案 0 :(得分:0)

这可能不起作用,具体取决于您创建的窗口小部件的类型。它可能适用于普通的用户控件,但不适用于自定义控件。

如果您关注sitefinity文档,则可以从SimpleView继承。然后,您可以访问辅助方法,以从模板中检索控件。所以不要这样:

ApplicationIFrame.Attributes["src"] = FrameSourceUrl;

你可以这样做:

this.GetControl<HtmlControl>("ApplicationIFrame", true).Attributes["src"] = FrameSourceUrl;