我正在编写一些代码来为后面的代码中的head标签添加一个链接标签...即
HtmlGenericControl css = new HtmlGenericControl("link");
css.Attributes["rel"] = "Stylesheet";
css.Attributes["type"] = "text/css";
css.Attributes["href"] = String.Format("/Assets/CSS/{0}", cssFile);
Run Code Online (Sandbox Code Playgroud)
尝试实现类似......
<link rel="Stylesheet" type="text/css" href="/CSS/Blah.css" />
Run Code Online (Sandbox Code Playgroud)
我正在使用HtmlGenericControl来实现这个...我遇到的问题是控件最终呈现为......
<link rel="Stylesheet" type="text/css" href="/CSS/Blah.css"></link>
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到我缺少的不渲染额外的东西</link>,我认为它应该是对象的属性.
我是否遗漏了某些东西,或者这种控制是不可能的?
谢谢
我有一个Html页面的模板,我需要在ASP.NET中动态添加其内容.我还需要对模板页面进行多次设置,具体取决于数据.
很明显,使用字符串创建大型Html非常脏.所以我选择使用HtmlGenericControl生成我的Html.而我做到了.但是我无法将生成的Html作为字符串从中获取.
它很容易在ASP.NET页面中添加这些控件并进行渲染,但我需要他们的Html.
如果它不可能,是否有任何其他结构化的方式生成Html ...... ???
我正在使用C#编写一个asp.net站点(实际上是一个DotNetNuke模块).从代码隐藏,我正在尝试创建一个<script>标签,我设置一个必需的js变量,然后将其附加到HMTL <head>.js var是图像文件的相对URL的(文字)数组.由于数组包含字符串,因此每个项必须用引号括起来.
问题是,之间的串<script>并</script>正在自动某处HtmlEncoded,让周围每个数组项目报价正在与更换".这似乎发生在HtmlGenericControl呈现时.DotNetNuke可能是罪魁祸首吗?有人可以建议一个解决方法吗?
我当前的代码(从Page_Load我控制中的处理程序运行):
HtmlGenericControl PreviewDataScriptTag = new HtmlGenericControl("script");
PreviewDataScriptTag.Attributes.Add("type", "text/javascript");
StringBuilder PreviewDataScriptCode = new StringBuilder();
PreviewDataScriptCode.Append("var preview_imgs = [");
string pathPrefix = @"""";
string pathSuffix = @""",";
foreach (string path in this.DocPreviewImages)
{
PreviewDataScriptCode.Append(pathPrefix + PreviewUrlBase + Path.GetFileName(path) + pathSuffix);
}
// Remove last comma from js code
PreviewDataScriptCode.Remove(PreviewDataScriptCode.Length-1, 1);
PreviewDataScriptCode.Append("];");
PreviewDataScriptTag.InnerText = PreviewDataScriptCode.ToString();
Page.Header.Controls.Add(PreviewDataScriptTag);
Run Code Online (Sandbox Code Playgroud) 我正在从代码后面的某个网页添加一些内容.当我想在一些文本后添加一个中断时,我尝试这样做:
pDoc.Controls.Add(New Label With {.Text = "whatever"})
pDoc.Controls.Add(New HtmlGenericControl("br"))
Run Code Online (Sandbox Code Playgroud)
,其中pDoc是Panel我正在添加内容的地方.但它br在最终的HTML中添加了两个标签.
我这样避免这种行为:
pDoc.Controls.Add(New Label With {.Text = "whatever" & "<br />"})
Run Code Online (Sandbox Code Playgroud)
无论如何,我很好奇,我想知道为什么
pDoc.Controls.Add(New HtmlGenericControl("br"))
Run Code Online (Sandbox Code Playgroud)
这样做.我也认为我的方法不太花哨.
问候,
我正在寻找一种可靠的机制来生成HTMLGenericControl(例如li元素)的服务器端回发处理程序。
我有一些我不希望更改的标记,并且希望以与标准.Net服务器控件相同的方式来对待。
另外,我知道我可以使用基于模板的控件将某些.Net控件隐藏在标记中,然后从客户端点击代理触发它们的点击事件。但是,我真的在询问是否可以做得更好。
我这样创建HtmlGenericControl:
HtmlGenericControl inner_li = new HtmlGenericControl("li");
inner_li.Attributes.Add("style", "list-style-type: none");
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这个attribue(style)的价值.
我正在生成一个菜单,其中一个Repeater控件绑定到一个XmlDataSource.
<asp:Repeater ID="myRepeater" runat="server"
DataSourceID="myDataSource"
onitemdatabound="myRepeater_ItemDataBound"
onitemcreated="myRepeater_ItemCreated">
<HeaderTemplate>
<ul class="menu_list">
</HeaderTemplate>
<ItemTemplate>
<li id="liMenu" runat="server"><asp:HyperLink ID="hrefMenuItem" runat="server" Text='<%# XPath("@text")%>' NavigateUrl='<%# XPath("@href")%>'></asp:HyperLink></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
<asp:XmlDataSource runat="server" ID ="myDataSource" XPath="Menu/Items/*" EnableCaching="False" />
Run Code Online (Sandbox Code Playgroud)
我希望能够根据鼠标悬停事件和当前选择的菜单项设置包含LI的样式.我尝试通过HtmlGenericControl,但我收到一个错误,它是readonly.
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HyperLink hrefCurrentMenuLink = e.Item.FindControl("hrefMenuItem") as HyperLink;
HtmlGenericControl l_genericControl = e.Item.FindControl("liMenu") as HtmlGenericControl;
if ((hrefCurrentMenuLink != null) && (l_genericControl != null))
{
string l_currentPage = GetCurrentWebPage();
if (String.Compare(Path.GetFileNameWithoutExtension(hrefCurrentMenuLink.NavigateUrl), l_currentPage, StringComparison.OrdinalIgnoreCase) == …Run Code Online (Sandbox Code Playgroud) ...我正在尝试使用此代码(我通过我的结对编程朋友发现,他将被称为“G 先生”)动态地向我的 ASP 控件添加或删除类
public static class WebHelper
{
public static void AddCssClass(this WebControl control, string cssClass) {
List<string> classes;
if (!string.IsNullOrWhiteSpace(control.CssClass))
{
classes = control.CssClass.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (!classes.Contains(cssClass))
classes.Add(cssClass);
}
else
{
classes = new List<string> { cssClass };
}
control.CssClass = string.Join(" ", classes.ToArray());
}
public static void RemoveCssClass(this WebControl control, string cssClass)
{
List<string> classes = new List<string>();
if (!string.IsNullOrWhiteSpace(control.CssClass))
{
classes = control.CssClass.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
}
classes.Remove(cssClass);
control.CssClass = …Run Code Online (Sandbox Code Playgroud) asp.net ×7
c# ×6
.net ×1
dotnetnuke ×1
html ×1
html-encode ×1
link-tag ×1
postback ×1
repeater ×1
server-side ×1
vb.net ×1