Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行时解析代码块(C#)_C#_Asp.net_Dynamic - Fatal编程技术网

在运行时解析代码块(C#)

在运行时解析代码块(C#),c#,asp.net,dynamic,C#,Asp.net,Dynamic,第一次在这里发帖 我正在编写一个动态控件,希望按照以下方式传入一些内容: HyperLink myLink = new HyperLink(); myLink.NavigateUrl = "/Home.aspx?id=<%= DataBinder.Eval(\"PageId\") %>"; myLink.Text = "The link"; myControl.Controls.Add(myLink); HyperLink myLink=new HyperLink(

第一次在这里发帖

我正在编写一个动态控件,希望按照以下方式传入一些内容:

HyperLink myLink = new HyperLink();  
myLink.NavigateUrl = "/Home.aspx?id=<%= DataBinder.Eval(\"PageId\") %>";  
myLink.Text = "The link";  
myControl.Controls.Add(myLink);  
HyperLink myLink=new HyperLink();
myLink.NavigateUrl=“/Home.aspx?id=“;
myLink.Text=“链接”;
myControl.Controls.Add(myLink);

我希望能够在运行时根据myControl最终将控件放入的上下文解析myLink.NavigateUrl(这不是网络控件,因此添加到控件集合不会输出到页面)。

这个问题对我来说没有任何意义。此时您应该知道PageId是什么,这样您就可以执行以下操作:

HyperLink myLink = new HyperLink();  
myLink.NavigateUrl = "/Home.aspx?id=" + PageId;  
myLink.Text = "The link";  
myControl.Controls.Add(myLink);  

如果出于某种原因您不能这样做,请您提供您正在处理的代码,这些代码实际上需要这样做。您发布的示例过于简化,无法向我们说明问题所在。

这个问题对我来说没有任何意义。此时您应该知道PageId是什么,这样您就可以执行以下操作:

HyperLink myLink = new HyperLink();  
myLink.NavigateUrl = "/Home.aspx?id=" + PageId;  
myLink.Text = "The link";  
myControl.Controls.Add(myLink);  
如果出于某种原因您不能这样做,请您提供您正在处理的代码,这些代码实际上需要这样做。您发布的示例过于简化,无法向我们说明问题所在。

更有效的方法是:

HyperLink myLink = new HyperLink();
myLink.NavigateUrl = string.Concat("/Home.aspx?id=", PageId);
myLink.Text = "The link";
myControl.Controls.Add(myLink);
更有效的方法是:

HyperLink myLink = new HyperLink();
myLink.NavigateUrl = string.Concat("/Home.aspx?id=", PageId);
myLink.Text = "The link";
myControl.Controls.Add(myLink);

请跟我开个玩笑,解释一下,当两个字符串连接在一起时,为什么效率更高。这是因为如果进行字符串连接,则每个+操作都会创建一个新字符串。如果改用string.format,则只会创建一次新字符串。但是,在本例中,这并不重要,因为只有一个字符串-concat。请幽默地告诉我,当两个字符串串联在一起时,为什么这样更有效。k。这是因为如果进行字符串连接,则每个+操作都会创建一个新字符串。如果改用string.format,则只会创建一次新字符串。但是,在本例中,这并不重要,因为只有一个字符串-concat。谢谢您的回答,但我不能执行上述建议,因为我正在编写myControl,而不是消费代码,因此myLink可能看起来像任何东西,提供了任何类型的数据绑定表达式。请进一步说明,我正在构建一个可重用的控件,其他人将向其中传递一组控件,并指定一个数据源。然后,可重用控件将以自己的方式处理控件的解析和呈现,例如,它将在加载数据源内容之前加载状态,并绑定控件,然后在加载/绑定之后更新状态以反映加载的数据(使用AJAX更新面板)。@Kurt,MyControl的所有表现就是它正在被使用,并且您正在将myLink添加到控件集合中。请更新问题或询问一个新问题,说明MyControl应该做什么。你提到数据绑定。mycontrol是否假定有重复项(如ASP.NET Repeater控件)?如果是这样的话,您可能需要查看ITemplate接口。我已经在使用ITemplate,但是当设置为指定格式时,这不会自动解析Navigate URL的值。Will re=根据建议询问更多信息。感谢您的回答,但我不能做上述建议,因为我正在编写myControl,而不是消费代码,因此myLink可能看起来像任何东西,提供了任何类型的数据绑定表达式。只是为了进一步澄清,我正在构建一个可重用的控件,其他人将向其中传递一组控件,并指定一个数据源。然后,可重用控件将以自己的方式处理控件的解析和呈现,例如,它将在加载数据源内容之前加载状态,并绑定控件,然后在加载/绑定之后更新状态以反映加载的数据(使用AJAX更新面板)。@Kurt,MyControl的所有表现就是它正在被使用,并且您正在将myLink添加到控件集合中。请更新问题或询问一个新问题,说明MyControl应该做什么。你提到数据绑定。mycontrol是否假定有重复项(如ASP.NET Repeater控件)?如果是这样的话,您可能需要查看ITemplate接口。我已经在使用ITemplate,但是当设置为指定格式时,这不会自动解析Navigate URL的值。将根据建议重新询问更多信息。请提供更多详细信息!你能举一个具体的例子说明你的控件是如何使用的吗?即使有你对@tster的评论,我也不明白你在问什么。请提供更多详细信息!你能举一个具体的例子说明你的控件是如何使用的吗?即使你对@tster发表了评论,我也不明白你在问什么。