asp.net 自定义可视化控件 设计时支持 相关问题 急!! 求教高手

redstone 2004-09-23 02:20:08
“/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>

设置好属性后 出现上面的错误
...全文
61 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
redstone 2004-09-23
  • 打赏
  • 举报
回复
在线等! 可视化控件当然是实例化的 根本对不上!
zshdy 2004-09-23
  • 打赏
  • 举报
回复
没空看你的代码,根据提示应该是没有生成一个实例而设置属性

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧