我创建了一个仅包含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应用程序,但这似乎没有以任何方式影响项目。
除此之外,我无法理解为什么无论我做什么,这个异常都会被抛出。
其他人都知道问题可能是什么?
谢谢, 雅克
答案 0 :(得分:0)
这可能不起作用,具体取决于您创建的窗口小部件的类型。它可能适用于普通的用户控件,但不适用于自定义控件。
如果您关注sitefinity文档,则可以从SimpleView继承。然后,您可以访问辅助方法,以从模板中检索控件。所以不要这样:
ApplicationIFrame.Attributes["src"] = FrameSourceUrl;
你可以这样做:
this.GetControl<HtmlControl>("ApplicationIFrame", true).Attributes["src"] = FrameSourceUrl;