600 分!!!谁解决我的问题给谁。我看是不是CSDN没高手,还是因为没分。没人解决的话此贴分给结贴时的 最后一个回复者。

r_swordsman 2008-08-02 09:39:03
昨天发了一个 0 分贴:http://topic.csdn.net/u/20080801/08/3f222f6a-4ecd-4c23-ad34-28b802352c43.html
好多人就说没给分啊,说我小气。要BS我,抵制我。其实我不怕无能的人BS我,抵制我。我到怕高手不帮助我。
其实我一共发了 4 个0分贴来问这个问题。http://topic.csdn.net/u/20080801/08/9dca6c24-b827-49d0-acdc-2ca5244a2470.html
http://topic.csdn.net/u/20080729/17/a6c9eb28-daa7-49eb-9fb8-edc46a6ef644.html
http://topic.csdn.net/u/20080729/16/dec95bc6-73e5-498b-86ef-c919cd376554.html

其实我认为分要给用心帮助我的人。 我以前也问了10来个问题,都是0分,只不过后来自己解决了。
这次没解决,我现在还是问这个问题。

自己写了一个控件 LiteralRenderer,
假设如下标记:

<asp:LiteralRenderer runat="server">..1239999999456. <input runat="server" at="s">aahhhhhhhaaaa </input>abcdef </asp:LiteralRenderer>

怎么把 asp:LiteralRenderer 开始和结束标记之间的内容全部当成 asp:LiteralRenderer 的一个 string 属性?


可能这次也没人回答,但我还是会结贴给分的,所以先说明给分规则:
1,如果有人帮助我解决了问题,600分(另开贴点名给分)全给他。
2,如果多个人帮助我解决了问题,解决办法不一样,600分(另开贴点名给分)酌情分配。
3,如果有人提示解决问题的方法,而我根据他的提示解决了问题,600分(另开贴点名给分)全给他。
4,如果多个人提示解决问题的方法,而我根据他们的提示解决了问题,600分(另开贴点名给分)酌情分配。
5,意思差不多的内容以第一个为主,其余的视为抄袭,不给分。
6,如果没人帮助我解决此问题,此贴的所有分给最后一名用心考虑过问题并给出解决办法者。
7,如果全部是灌水的,给最后一名灌水的(广告除外)。
8,如果全部不符合,我自己减小号接分(应该有人来顶吧?)。
9,最后以实际结贴给分为准。



...全文
480 62 打赏 收藏 转发到动态 举报
写回复
用AI写文章
62 条回复
切换为时间正序
请发表友善的回复…
发表回复
r_swordsman 2008-08-19
  • 打赏
  • 举报
回复
看来没戏了
syc958 2008-08-08
  • 打赏
  • 举报
回复
你可以试一下innerHTML这个属性!



<asp:LiteralRenderer runat="server"><div id="服务控件相关的变量">..1239999999456. <input runat="server" at="s">aahhhhhhhaaaa </input>abcdef </div></asp:LiteralRenderer>

服务控件相关的变量.innerHTML就可以做为你的一个string属性
tootto 2008-08-08
  • 打赏
  • 举报
回复
这样: <asp:LiteralRenderer runat="server">sdfasdfdabcdefadikadfnadf</LiteralRenderer> 破坏了规则.

这样: <asp:LiteralRenderer runat="server" Text="sdfadfasdfsdfasdfsaffdsf" /> 遵循规则.

所以参看我55,56楼的回复,遵循规则且解决了你的问题.
r_swordsman 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 55 楼 tootto 的回复:]
引用 11 楼 sp1234 的回复:
你最好遵循控件的普遍规则,遵循asp.net已经设计好的解析过程的逻辑。你见过asp.net中哪一个控件这样做过?如果要作为一个string,应该将目标设计为:

<asp:LiteralRenderer runat="server" Text='..1239999999456. <input runat="server" at="s">aahhhhhhhaaaa </input>abcdef' />

如果太随意地破坏一般的规则,反而带来asp.net系统运行和自己将来的程序处理的混乱。…



完全同意这…
[/Quote]

把开始标记和结束标记之间的内容作为控件的一个属性,这会破坏asp.net的什么东西吧?
r_swordsman 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 tootto 的回复:]
这样: <asp:LiteralRenderer runat="server">sdfasdfdabcdefadikadfnadf </LiteralRenderer> 破坏了规则.

这样: <asp:LiteralRenderer runat="server" Text="sdfadfasdfsdfasdfsaffdsf" /> 遵循规则.

所以参看我55,56楼的回复,遵循规则且解决了你的问题.
[/Quote]

<asp:LiteralRenderer runat="server">sdfasdfdabcdefadikadfnadf </LiteralRenderer> 破坏了规则.

这是出自哪里的?官方文档?很多标记都可以这么写吧?
r_swordsman 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 59 楼 syc958 的回复:]
你可以试一下innerHTML这个属性!


<asp:LiteralRenderer runat="server"><div id="服务控件相关的变量">..1239999999456. <input runat="server" at="s">aahhhhhhhaaaa </input>abcdef </div> </asp:LiteralRenderer>

服务控件相关的变量.innerHTML就可以做为你的一个string属性
[/Quote]

我试过了不行,你试过没有?
r_swordsman 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 49 楼 moonsliver 的回复:]
那个。。。问个问题。。。
你这个功能打算什么时候使用?render控件的时候使用?还是页面加载完毕之后使用?
[/Quote]

最好在这个控件实例化的时候..或者最好在页面初始化INIT之前..
r_swordsman 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 pupo 的回复:]
折中的办法,获取网页源代码,在用正则表达式找出控件自己的定义代码

protected override void Render(HtmlTextWriter output)
{
string fileName = null;
if (this.Site == null)
{
fileName = Page.Server.MapPath(Page.Request.Url.LocalPath);
}
else
{
EnvDTE.DTE _dte = (EnvDTE.DTE )Site.GetService(typeof(EnvDTE.DTE ));
fileName = _dte.ActiveDocument.FullName;
}

//获取网页源代码…
[/Quote]


这个方法....
不过先谢谢了...看还有没其他好的办法
moonsliver 2008-08-07
  • 打赏
  • 举报
回复
那个。。。问个问题。。。
你这个功能打算什么时候使用?render控件的时候使用?还是页面加载完毕之后使用?
pupo 2008-08-07
  • 打赏
  • 举报
回复
折中的办法,获取网页源代码,在用正则表达式找出控件自己的定义代码

protected override void Render(HtmlTextWriter output)
{
string fileName = null;
if (this.Site == null)
{
fileName = Page.Server.MapPath(Page.Request.Url.LocalPath);
}
else
{
EnvDTE.DTE _dte = (EnvDTE.DTE )Site.GetService(typeof(EnvDTE.DTE ));
fileName = _dte.ActiveDocument.FullName;
}

//获取网页源代码
String tmp = string.Empty;
if (System.IO.File.Exists(fileName))
{
System.IO.StreamReader sr = new System.IO.StreamReader(fileName);
tmp = sr.ReadToEnd();
sr.Close();
}


output.Write(Filter(tmp));
}
r_swordsman 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 veiny 的回复:]
引用 45 楼 r_swordsman 的回复:
你还没明白我的意思,我是要把控件之间的内容作为属性。

就是作为LiteralRenderer 的属性进行赋值的 ,
在代码中你可以对ListeralRenderer的属性进行赋值,
在xml中你也可以把内容作为控件树的形式给出,

CreateChildControls方法只是取了巧~!
[/Quote]

你搞反了,我是要在aspx页面放置一个控件,代码如下:
<asp:LiteralRenderer runat="server">..1239999999456. <input runat="server" at="s">aahhhhhhhaaaa </input>abcdef </asp:LiteralRenderer>

然后我就想知道LiteralRenderer该怎么写,才能得到字符串 ..1239999999456. <input runat="server" at="s">aahhhhhhhaaaa </input>abcdef

明白否?
tootto 2008-08-07
  • 打赏
  • 举报
回复
忘了一条,做个检测,如果测到“,在前面加个\
tootto 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sp1234 的回复:]
你最好遵循控件的普遍规则,遵循asp.net已经设计好的解析过程的逻辑。你见过asp.net中哪一个控件这样做过?如果要作为一个string,应该将目标设计为:

<asp:LiteralRenderer runat="server" Text='..1239999999456. <input runat="server" at="s">aahhhhhhhaaaa </input>abcdef' />

如果太随意地破坏一般的规则,反而带来asp.net系统运行和自己将来的程序处理的混乱。…
[/Quote]


完全同意这个观点。 你的LiteralRenderer应该有个Text attribute。

而且你没说是web custom control还是user control,也没有说明继承了哪个类。

在你的control里加下面的attribute, 然后用htmlEncode

private string text
public string Text
{
set { text = Server.HtmlEncode(value); }
get { return = text; }
}
r_swordsman 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 ojlovecd 的回复:]
innerHtml?
[/Quote]

我试试看
moonsliver 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 ojlovecd 的回复:]
innerHtml?
[/Quote]
和我想的一样。。。

Lz不然就在自定义控件中内嵌一个js文件。。。然后在Render最后添加到页面上。。。
不过这样还是在onload完成之后才会执行。。。所以不符合你的要求。。。
我姓区不姓区 2008-08-07
  • 打赏
  • 举报
回复
innerHtml?
r_swordsman 2008-08-06
  • 打赏
  • 举报
回复
唉,怎么就没人解决呢?
veiny 2008-08-06
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 r_swordsman 的回复:]
你还没明白我的意思,我是要把控件之间的内容作为属性。[/Quote]

就是作为LiteralRenderer 的属性进行赋值的 ,
在代码中你可以对ListeralRenderer的属性进行赋值,
在xml中你也可以把内容作为控件树的形式给出,

CreateChildControls方法只是取了巧~!
r_swordsman 2008-08-06
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 veiny 的回复:]
private string subtext;
public string SubText
{
get
{
return this.subtext;
}
set
{
string s = value;
s = s.Replace("&", "&");
s = s.Replace(" ", " ");
s = s.Replace("\"", """);
s = s.Replace(" <", "<");
s = s.Replace(">…

把 <asp:LiteralRenderer 内的内容作为子控件通过这是ListeralRenderer的SubText属性赋值

[/Quote]

你还没明白我的意思,我是要把控件之间的内容作为属性。
r_swordsman 2008-08-06
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 pupo 的回复:]
在RenderControlAsString方法里,你可以想办法获取控件定义的代码
[/Quote]

问题是怎么获取到定义的代码?
加载更多回复(42)

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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