gpt4 book ai didi

c# - 如何获取asp :placeholder into a variable that I can apply an xml transform on?的内容

转载 作者:太空宇宙 更新时间:2023-11-03 11:01:42 25 4
gpt4 key购买 nike

如何将 asp:placeholder 的内容放入可以应用 xml 转换的变量中?

背景

我正在尝试自定义 .NET Web 应用程序的布局。这是一个企业产品,允许我添加/删除 ascx 文件中的内容 block ,并更改 css 属性。我无权访问任何 CodeBehind 文件(即 .cs 源代码),但如果我知道如何将这些文件添加到 .ascx 文件,我可能会编写自己的 .cs。然而,实际内容源于 <asp:placeholders>所以我们通过添加/删除对占位符的调用来构建页面。

总体目标是将占位符生成的 html 表格替换为例如<div>以便应用程序可以响应。

例子

占位符的使用示例是

<asp:PlaceHolder ID="TreeHead" runat="server"></asp:PlaceHolder>

生成输出

<table id="loginBox" style="padding: 2px; margin: 0px;" cellpadding="2">
<tr>
<td><label for="LM_1">Please enter your username</label></td>
<td><input name="LM$1$" type="text" id="LM_1" /></td>
</tr>
<tr>
<td><label for="LM_2">Please enter your password</label></td>
<td><input name="LM$2$" type="password" id="LM_2"/></td>
</tr>
</table>

我想把它转换成这样:

<div id="loginBox">
<div class="row">
<div class="element"><label for="LM_1">Please enter your username</label> </div>
<div class="element"><input name="LM$1$" type="text" id="LM_1" /> </div>
</div>
<div class="row">
<div class="element"> <label for="LM_2">Please enter your password</label>
</div>
<div class="element"> <input name="LM$2$" type="password" id="LM_2"/> </div>
</div>

我的想法是

  1. 包装<table><xml></xml>标签
  2. 使用 xslt 转换表格
  3. 提取结果 <div id="loginBox"></div>并输出

我想我可以通过 .ascx 文件中的一些内联 C# 来实现这一点,例如

<% string table = "<xml>" + <asp:PlaceHolder ID="TreeHead" runat="server"></asp:PlaceHolder> + "</xml>"; %>

这失败了,因为我相信任何 c# 代码都需要在 CodeBehind 文件中,所以我被卡住了。如果我能把表格变成一个变量,那么我就可以按照this example应用转换。我发现了几个链接(见下文)做类似的事情,但我相信那些需要访问代码隐藏(即 *.cs)文件

  1. asp:placeholder contents to string
  2. http://www.tomot.de/en-us/article/3/asp.net/create-a-control-in-the-codebehind-and-retrieve-its-rendered-output

问题

如何将 asp:placeholder 的内容放入可以应用 xml 转换的变量中?

感谢您的帮助。

最佳答案

你已经完成了一半......你只需要让占位符渲染,然后隐藏结果,转换它,然后渲染你的转换。

放在页面上

<asp:PlaceHolder ID="TreeHead" runat="server" /><%= FinalTable %>

以及渲染和转换 html 的代码

using (TextWriter stringWriter = new StringWriter())
{
using (HtmlTextWriter RenderOnMe = new HtmlTextWriter(stringWriter))
{
// render the control
TreeHead.RenderControl(RenderOnMe);

// transfor here the stringWriter as you like

// now add it to the string
FinalTable = "<xml>" + stringWriter.ToString() + "</xml>";
}
}

// hide the control, and only render the FinalTable
TreeHead.Visible = false;

FinalTable是一个页面public string

关于c# - 如何获取asp :placeholder into a variable that I can apply an xml transform on?的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17465210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com