RenderControl方法有一个奇怪的问题.
我有这个标记的UserControl(ASCX文件):
<ul>
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<li>
<a href="<%# ((Image)Container.DataItem).Url %>">
<img src="<%# ((Image)Container.DataItem).Url %>?mw=80&mh=50" title="<%# ((Image)Container.DataItem).Title %>" alt="<%# ((Image)Container.DataItem).Alt %>" />
<p><%# ((Image)Container.DataItem).Description %></p>
</a>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
Run Code Online (Sandbox Code Playgroud)
当此代码在正常页面生命周期中执行时(例如,当它被添加到页面时),它会将有效的XHTML呈现为标记:
<ul>
<li>
<a data-fullscreen="/someimage.jpg" href="/another-image.jpg">
<img src="/myimage?mw=80&mh=50" title="Image Title" alt="Alt Text" />
<p></p>
</a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
请注意p标记如何具有结束标记(即使它是空的),并且图像标记也有结束标记.
当我在服务器上实例化此控件并尝试使用RenderControl()方法将其解析为字符串时,如下所示:
StringBuilder builder = new StringBuilder();
using (StringWriter writer = new StringWriter(builder))
{
using (XhtmlTextWriter htmlWriter = new XhtmlTextWriter(writer))
{
var control = (GalleryControl)LoadControl("~/layouts/Controls/Gallery/GalleryControl.ascx");
control.Images = m_images;
control.RenderControl(htmlWriter);
}
}
return …Run Code Online (Sandbox Code Playgroud) 我正在尝试利用RavenDB的DocumentConvention API在我的域对象上自动设置增量ID.
我在IDocumentStore上使用这行代码完美地工作了:
DocumentStore.Conventions.RegisterIdConvention<User>
((dbname, commands, user) => "users/" + commands.NextIdentityFor("users"));
Run Code Online (Sandbox Code Playgroud)
每当我存储没有已设置ID的新User对象时,这将创建具有"users/1","users/2"等的用户对象的顺序ID .
但是,我想为Async文档会话执行此操作,但是在调用RegisterAsyncIdConvention()时无法找到有关如何从会话中获取"Next Identity"的任何文档...
docStore.Conventions.RegisterAsyncIdConvention<User>
((dbname, commands, user) => "users/" + commands.NextIdentityFor("users"));
Run Code Online (Sandbox Code Playgroud)
......不编译,因为NextIdentityFor不可用的IAsyncDatabaseCommands接口.
任何人都可以给我任何提示吗?还有人试过这个吗?
谢谢.