2012-02-28 9 views
4

何かを行う方法を理解する助けが必要です。asp.netでhtml要素を追加する

私はこのギャラリー(galleriffic)を持って、Flicker.comに格納されているいくつかのイメージが私は、画像を取得するために、フリッカーAPIを使用しますが、まだギャラリーをテストするためにそれらを手動で追加します。

は今、私はフリッカーAPIでそれらを取得した後、HTMLに画像を挿入するための良い方法を探しています。

私はこの htmltextwriterを発見し、機能

Response.Write(GetDivElements());

を使用しますが、これは、HTMLの上ではなくbodyタグ内のdivのを追加しています。

私qustionsは次のとおりです。

  1. HtmlTextWriter writer = new HtmlTextWriter(stringWriter)サーバ側でHTMLタグを構築するための良い方法ですか?

  2. その後、他のHTML Response.Write("");に要素を追加するための良い方法はありますか?

答えて

4

あなたがasp.netの古いスタイルを使用して、MVCをASP.NETされていない場合は、あなただけのIDとrunat =「server」を使用しDIVを作成することができますが。次に、htmlに直接書き込むことができます。また

DivINeedToAddStuffTo.InnerHtml = GetDivElements(); 

aspx.cs

aspxページ

<div id = "DivINeedToAddStuffTo" runat="server" /> 

、私はあなたがPlaceholdersに探してみてください、あなたのHTMLマークアップ

+0

yeap私はそれをテストし、あなたに感謝私が探していた:) – samy

+0

@samyを、はい、それはしかし、あなたのビューステートを確認するに動作すること。それはdivの内容を含んでいます。マークアップを効果的に2回追加しました。あなたのページが潜在的に大きくなるのを避けたいのであれば、私の答えをチェックしてください。 –

2

を作成するために、指定されたHtmlTextWriterを使用したと間違って何も表示されません。こうすることで、イメージコントロールのインスタンスを作成し、プレースホルダを追加することができます。

Image myImg = new Image(); 
myImg.ImageUrl = "MyPicture.jpg"; 
myPlaceholder.Controls.Add(myImg); 
+0

あなたに助けてくれてありがとう – samy

7

ここでマークアップを追加する必要があります。

MyPlaceholder.Controls.Add(new Literal() { Text="<div>some markup</div>"}); 

の背後にある私のコードで

私のページで

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

ので、私はそれをこのように実行します。あなたは構造体にあなたがそれを必要とするプレースホルダを置くことができます

1)あなたのページの

2)Controlsコレクションに実行時にリテラルを追加することにより、Vi ewStateは内容が肥大化しています。ページがレンダリングされる前にあなたがそのコードを持っている可能性があり

 foreach (var item in items) 
     { 
      Literal literal = new Literal(); 
      literal.text = item.html; //Assuming the item contains the html. 
      MyPlaceholder.Controls.Add(literal); 
     } 

+0

あなたに助けてくれてありがとう – samy

+0

私はある時間前にそれを読んで、異なったファイルまたはデータベースのビューステートを保存することが可能ですか?この技術は大きなビューステートに役立ちますか? – samy

+0

私が知る限り、SessionStateでのみ可能です。 ViewStateには、ページコントロールのプロパティ値が含まれています。これはページレベルで永続媒体として機能します。ごみが吹き出ても半分の時間です。あなたは非常に注意する必要があります.ViewStateだけで200K以上のページを見ました。 ViewStateのコンテンツを表示する良いサイト(http://ignatu.co.uk/ViewStateDecoder.aspxなど)があります。チェックアウトする価値がある。 –

1

あなたはASPリテラルコントロールを使用することができるはずです。

ポール

を助け

希望

EDIT

申し訳ありませんが、私はあなたがイメージ(複数可)へのリンクを持つHTMLを思っていた、私が間違っていたと思うし、実際のではありません画像そのものであれば、ジャスティンの答えはあなたに合っています。

+0

時間を割いてくれてありがとう、ありがとう。 – samy

1
var ctrl = new WebControl(HtmlTextWriterTag.Div) { CssClass = "SomeClass" }; 
    ctrl.Attributes["style"] = "float:left;display:inline-block;margin:3px;"; 

    ctrl.Controls.Add(new Image 
    { 
     ImageUrl = 
     Page.ResolveUrl("image path here") 
    }); 

    this.Controls.Add(ctrl); 
関連する問題