2016-07-21 7 views
0

に私は、すなわち4つの変数が存在するというモデルを持っていますループ。これらの要素のsrc属性は、src = "\Images\@Model.Image1",src = "\Images\@Model.Image2"などである必要があります。使用モデルの変数名を動的にレイザーC#の

したがって、これをforループ内で実行する方法はありますか?私は今、何をしました

@for (int i = 1; i <= 4; i++) 
{ 
    <img src="\Images\@Model.ImagePath1" id="[email protected](i)" width="150px" height="100px" /> 
} 

感謝:)

+1

短い答えは、(反射を用いて、少なくともしないうちで)全くありません。ループはコレクションを反復するためのものです。なぜただ1つのプロパティ 'List Images'を持っていて、それに4つのパスを追加してみませんか? –

+1

@Shanidすべての画像をリストに追加し、ビューページでリストをループする必要があります –

+1

画像のHTMLコードでは、幅と高さを使用しないでください。代わりにCSSスタイルを使用します。 –

答えて

3

あなたはこれを行うことができますビューで、モデルクラスを変更したくない場合は、次の

@{ 
    var images = new string[] 
    { 
     Model.Image1, Model.Image2, Model.Image3, Model.Image4, 
    }; 
} 

は、次にHTMLで:

<div> 
    @foreach (var image in images) 
    { 
     <img src="\Images\@image" /> 
    } 
</div> 
+1

OPがコントローラとモデルコードを変更したくない場合は、これは良いことです。 +1 –

+0

うん、私はモデルを変更したくないです。私は今これを試してみます:) – Shanid

+0

@Shanidあなたが感謝のために働く場合は、答えとしてそれを受け入れてください。 –

1

あなたがここに複数のオプションを持っています。あなたは可能性:

私の最初の選択肢は、あなたが、その後、あなたのビューにだけ

@for (int i = 0; i < Model.ImageNames.Length; i++) 
{ 
    <img src="\Images\@imageName" id="[email protected](i)" width="150px" height="100px"/> 
} 

しかし、あなたがリストを使用しないようにしたいならば、リストに

public class ViewVM 
{ 
    public List<string> ImageNames = new List<string>(); 
    public ViewVM() 
    { 
     ImageNames.Add("image1.png"); 
     ImageNames.Add("image2.png"); 
     ImageNames.Add("image3.png"); 
     ImageNames.Add("image4.png"); 
    } 
} 

を保存するだろう次のようにすべての画像を配列に格納することができます。public string[] imageNames = { image1, image2, image3, image4 };

そして、同じように表示されます。

+2

あなたの答えには引用符の問題があり、 'i'は未定義です。 –

+0

修正しました。 – nbokmans

+0

@nbokmans、私はリストを変更したくない。私はあなたの2番目の方法を今試してみます。 – Shanid

1

私は最初のビューモデルを作成しますそのような画像:

public class ImageData { 
    public int ImageId {get;set;} 
    public string Url {get;set;} 
    public string Alt {get;set;} 
} 

私はそのように

のようなページのためのViewModelを作成します鑑み
public class PageData { 
    public PageData(){ 
     Images = Images ?? new List<ImageData>(); 
    } 

    // Some other other properties here if you want or need 

    public List<ImageData> Images {get;set;} 
} 

foreach (var image in @Model.Images) { 
    <img src="\Images\@image.Url" id="@image.ImageId" width="150px" height="100px" /> 
} 
関連する問題