asp.net 自定义可视化控件 设计时支持 相关问题 急!! 求教高手
“/Wou.BBS”应用程序中的服务器错误。
--------------------------------------------------------------------------------
无法为“System.Web.UI.HtmlControls.HtmlInputHidden”类型的值生成代码。试图为 HiddenValueControl 生成属性值时出现此错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 无法为“System.Web.UI.HtmlControls.HtmlInputHidden”类型的值生成代码。试图为 HiddenValueControl 生成属性值时出现此错误。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[HttpException (0x80004005): 无法为“System.Web.UI.HtmlControls.HtmlInputHidden”类型的值生成代码。试图为 HiddenValueControl 生成属性值时出现此错误。]
System.Web.Compilation.CodeDomUtility.GenerateExpressionForValue(PropertyInfo propertyInfo, Object value, Type valueType)
System.Web.Compilation.TemplateControlCompiler.BuildBuildMethod(ControlBuilder builder, Boolean fTemplate, PropertySetterEntry pse)
控件代码如下
using System;
using System.IO;
using System.Web;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
[assembly:TagPrefix("DialogOpenerControls", "DialogOpener")]
namespace WesteraSoft.Forp.UserInterface
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
[DefaultProperty("Text"),ToolboxData("<{0}:DialogOpener runat=server></{0}:DialogOpener>")]
[Designer("WesteraSoft.Forp.UserInterface.DialogOpenerDesigner, Wou.DialogOpener")]
public class DialogOpener:WebControl
{
public DialogOpener()
{
//
// TODO: 在此处添加构造函数逻辑
//
this.ImgUrl = this.ResolveUrl("~/Image/flowatch.gif");
this.Width = 20;
this.Height = 20;
}
public string ImgUrl;
private eDialogType _DialogType;
private string _TextControl;
private string _HiddenValueControl;
[Description("代表对话框类型的枚举")]
public eDialogType DialogType
{
get
{
return _DialogType;
}
set
{
_DialogType = value;
}
}
public Control TextControl
{
get
{
if(this._TextControl==null)
{
return null;
}
return this.FindControl(this._TextControl);
}
set
{
this._TextControl = value.ID;
}
}
public HtmlInputHidden HiddenValueControl
{
get
{
if(this._HiddenValueControl==null)
{
return null;
}
Control contr = this.FindControl(this._HiddenValueControl);
if(contr!=null)
return (HtmlInputHidden)contr;
else
return null;
}
set
{
this._HiddenValueControl = value.ID;
}
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<script languang=javascript>\r\n");
writer.Write("function SelectUser"+this.ClientID+"(UserSN,UserName){\r\n");
writer.Write("var obj = new Object();obj.Var1= UserSN; obj.Var2= UserName;\r\n");
writer.Write("window.showModalDialog('"+this.ResolveUrl("~/RefComponent/SelectFrame.aspx")+"?url=SelectUserDialog.aspx',obj,\r\n");
writer.Write("'dialogHeight=500px;dialogWidth=510px;status=no;edge=raised;scroll=no');\r\n}\r\n");
writer.Write("</script>\r\n");
if(TextControl==null)
{
writer.Write("<img src='"+this.ImgUrl+"' onclick=\"alert('没有设置TextControl属性');\" width=20 height=20 >");
return;
}
if(HiddenValueControl==null)
{
writer.Write("<img src='"+this.ImgUrl+"' onclick=\"alert('没有设置HiddenValueControl属性');\" width=20 height=20 >");
return;
}
writer.Write("<img src='"+this.ImgUrl+"' onclick=\"SelectUser"+this.ClientID+"("+this._HiddenValueControl+","+this._TextControl+");\" width=20 height=20 >");
}
}
public enum eDialogType
{
SelectUserDialog,
SelectProjectDialog,
SelectClientDialog,
SelectDepartmentDialog,
SelectDossierDialog,
SelectPoutDialog,
SelectStationDialog,
SelectSurplyDialog
}
public class DialogOpenerDesigner : System.Web.UI.Design.ControlDesigner
{
public override string GetDesignTimeHtml()
{
// Component is the instance of the component or control that
// this designer object is associated with. This property is
// inherited from System.ComponentModel.ComponentDesigner.
DialogOpener simple = (DialogOpener) Component;
StringWriter sw = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(sw);
Table dt = new Table();
dt.Width = simple.Width;
dt.Height = simple.Height;
dt.BackColor = System.Drawing.Color.FromName("#f4f6fa");
dt.BorderWidth=1;
dt.BorderColor=System.Drawing.Color.FromName("#a4aec5");
dt.Rows.Add(new TableRow());
dt.Rows[0].Cells.Add(new TableCell());
dt.Rows[0].Cells[0].HorizontalAlign=HorizontalAlign.Center;
dt.Rows[0].Cells[0].Text = "<font style='font-size:12px'>@</font>";
dt.RenderControl(tw);
return sw.ToString();
}
}
}
编译后的组件 添加到Vs.net工具箱中
托放到asp.net页面 上
<cc1:DialogOpener id="DialogOpener1" runat="server" DialogType="SelectUserDialog" HiddenValueControl="HiddenUserID" TextControl="Author"></cc1:DialogOpener>
设置好属性后 出现上面的错误