我正在尝试在更新面板的asyncron回发期间通过Page.LoadControl方法将带有用户Web控件的JavaScript代码加载到页面中.
我已经尝试过专门为那个场景设计的scriptmanager方法,但是javascript只是不会返回给用户.
为了更好地解释我的情景:
Master Page具有脚本管理器,并且在异步回发期间,一个页面通过Page.LoadControl方法加载用户控件.自定义控件在预渲染事件处理程序中注入javascript.这是注入js的时间问题还是不可能这样做?
有人可以尝试推荐解决以下请求的最佳原因:
我使用Repeater类作为Base创建了许多扩展类,并且喜欢这样做的灵活性,易用性和结果.我现在要做的是为单个对象(即不实现IListSource或IEnumerable的DataSource)制作类似的自定义Web控件.我已经创造了什么,我尝试使用1项的列表来保存对象,然后绑定设置数据源时延长中继器,然后实现结构.
e.g a rough example:
Dim oObj as New MyObject(1)
Dim gl As New Generic.List(of MyObiect)()
gl.Add(oObj)
rpt.DataSource = gl
rpt.DataBind()
Run Code Online (Sandbox Code Playgroud)
这似乎是一件小事,我希望能做的是以下几点:
e.g new call, where my control is the new custom control:
Dim oObj as New MyObject(1)
myControl.DataSource = oObj
myControl.DataBind()
Run Code Online (Sandbox Code Playgroud)
我希望能够使用各种变量和属性定义此自定义控件,其结果将启用以下类型的布局:
<My:ObjControl ID="frm" runat="server">
<Tabs>
<My:Tab name="Details">
<Items>
<My:Item Type="Text" Label="First Name" Property="FirstName" />
<My:Item Type="Text" Label="Last Name" Property="LastName" />
<My:Item Type="Text" Label="Title" Property="Title" />
</Items>
</Tab>
<My:Tab name="Address">
<Items>
<My:Item Type="Text" Label="Address 1" Property="Address1" />
<My:Item …Run Code Online (Sandbox Code Playgroud) 这是我的自定义控件.它继承了WebControl类的[Height]属性.我想在构造函数中访问它来计算其他属性.但它的值总是为0.任何想法?
public class MyControl : WebControl, IScriptControl
{
public MyControl()
{
AnotherProperty = Calculate(Height);
.......
}
Run Code Online (Sandbox Code Playgroud)
我的aspx
<hp:MyControl Height = "31px" .... />
Run Code Online (Sandbox Code Playgroud) 我有一个自定义服务器控件,它有很多属性 - 每个属性都在viewstate中保存它们的状态:
public Color XXX
{
get
{
return (Color)ViewState["XXX"];
}
set
{
ViewState["XXX"] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
这需要很大的空间 - 有没有办法减少代码中的行数?
我正在开发一个Facebook FBML控件库,并希望创建我的FBML控件,有点像ASP.NET WebControls库.我有一个默认处理渲染的基类; 这是我的渲染方法:
protected override void Render(HtmlTextWriter writer)
{
AddAttributesToRender(writer);
if (UseXfbmlSemantics)
{
writer.RenderBeginTag(ElementName);
writer.EndRender();
writer.RenderEndTag();
}
else
{
writer.RenderBeginTag(ElementName);
writer.RenderEndTag();
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是基于UseXfbmlSemantics修改渲染 - 如果它是真的,它应该渲染,例如:
<fb:name uid="10300399458"></fb:name>Run Code Online (Sandbox Code Playgroud)
当它为假时,它应该使用自闭标签呈现:
<fb:name uid="10300399458" />Run Code Online (Sandbox Code Playgroud)
我可以让"真实"条件几乎正确地工作,但自动关闭标签似乎与Render-方法集不兼容.不幸的是,如果是这种情况,它也意味着AddAttributesToRender模式也不起作用.它实际产生的是:
<fb:name uid="10300399458">
</fb:name>
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得HtmlTextWriter(或者我需要使用哪个HtmlTextWriter)来使它呈现自闭标签?或者,至少,我怎样才能使它不呈现临时空间(以便开始和结束标签紧挨着彼此)?
有没有办法让我有一个服务器控件
MyControl<T>
Run Code Online (Sandbox Code Playgroud)
这样我就可以在aspx页面中注册并使用它
<mc:MyControl<ThingForControlToUse> ID="instanceOfMyControl" runat="server"
Run Code Online (Sandbox Code Playgroud)
显然设计师不喜欢这样,除了创建一个带有类型参数的非通用包装外,还有什么好的方法吗?
我想回答我自己的问题,但我想确保我正确理解.我最初认为当用户在表单中提供值时,在回发时,值是作为Viewstate的一部分提交的,因为TextBox.Text是viewstate的一部分.现在我发现用户提供的值实际上不会在OnLoad事件之后应用于控件.这使我感到困惑,因为我认为viewstate在OnLoad之前(或调用Controls.Add()时)被加载到控件中.我已经浏览了页面上的文档并控制了生命周期几次,我现在才意识到处理回发数据有不同的步骤(这一步没有出现在很多文档中:(
1)因此,在OnLoad事件之后应用用户在字段中输入的值的回发数据,并且在OnLoad事件之前应用Viewstate数据?
2)基本上所有这些意味着在回发时服务器获取TextBox.Text属性的两个值,Viewstate中的属性,就像前一个请求中的"旧"值,以及用户提供的新值.表格?
3).net框架是否应用与Viewstate相同的回发数据,因为它通过它的ID属性找到适当的控件?这很重要,因为我正在动态创建控件,我甚至可能有超时更改结构的表单,需要考虑如何处理ID.到目前为止,我还没有设置ID属性,一切正常,但事情可能会更复杂.
4)在客户端根本没有修改viewstate数据吗?或者视图状态与服务器在先前请求中发送的内容相同(假设没有篡改)?我的印象曾经是服务器将所有控件属性编码到视图状态中,而在客户端提交表单时,视图状态字段被解码,修改,编码并提交给服务器并进行修改.我假设有一堆javascript为我做这一切.现在我觉得我错了.相反,Viewstate似乎永远不会在客户端更改,并且所有客户端更改都在回发数据中,以便下一个请求服务器加载视图状态,加载回发,并在下一个响应中提供新的更新视图状态?
我有一个CustomControl带有属性属性的自定义ASP.NET服务器控件Path.
如果Path没有明确指定,那么我想要抛出异常.
例如,
<myControls:CustomControl Path="somedirectory/someotherdirectory/somefile.ext" runat="server" />
应该编译,和
<myControls:CustomControl runat="server" /> 应该抛出异常.
我意识到我可以在Path属性的getter中做到这一点,但是有一些属性需要这个吗?
除了在代码隐藏属性的getter方法中使用之外,是否有任何机制可以验证属性属性的值?
asp.net custom-server-controls servercontrols asp.net-controls
我如何强制WebControl渲染为<div>?目前,它呈现为一个<span>,我们的UI人更喜欢它<div>.为了容纳他,我想看看这是否可能,如果是的话,我怎么可能.
任何人都可以推荐一个免费的asp.net控件,我可以用于以下内容:
这是一个控件,我发现这是非常好的,但我试图找到替代品:数据 绑定计划控件
asp.net data-binding custom-server-controls scheduling servercontrols
asp.net ×9
c# ×3
.net ×1
.net-3.5 ×1
data-binding ×1
facebook ×1
generics ×1
html ×1
javascript ×1
repeater ×1
scheduling ×1
updatepanel ×1
webforms ×1