ページにユーザーコントロールを動的に追加しています:
- ユーザーがボタンをクリックすると、jquery ajax メソッドが実行され、Web メソッドが呼び出されます
- Web メソッドは、文字列としてレンダリングされたユーザー コントロールを返します
- ajax呼び出しの成功部分で、受信したhtmlがプレースホルダーに追加されます
私のユーザーコントロールをレンダリングする方法:
public static string RenderUserControlAsString(string path)
{
var page = new PageOverride();
var viewControl = (UserControl)page.LoadControl(path);
page.Controls.Add(viewControl);
var output = new StringWriter();
HttpContext.Current.Server.Execute(page, output, true);
return output.ToString();
}
これは問題なく動作しますが、asp:Image 要素の ImageUrl に問題があります (私のユーザー コントロールには複数の要素が含まれており、asp:Image はその 1 つにすぎません)。
<asp:Image ID="imgDelete" runat="server" ImageUrl="~/images/delete.gif" onmouseover="this.style.cursor='hand'" onmouseout="this.style.cursor='default'"/>
はImageUrl
に変換されますが../images/delete.gif
、これは問題ありません。実際には、 はImageUrl
常に 2 つのドットとその前にスラッシュを受け取ります。それを防ぐ方法はありますか?
編集 - プロジェクト構造:
根:
- 画像
- 削除.gif
- ...
- Web コントロール
- MyWebControl.ascx
- ...
- MyWebService.asmx
- MyPage.aspx