露骨な表現を使う
<img src="images/image0@(i)" />
これにより、次のような出力が得られます
<img src="images/image01">
<img src="images/image02">
<img src="images/image03">
理想的には、このような for ループを使用したり、ビューで画像の URL 値を作成したりすることは避けます。代わりに、ViewModel に画像のコレクションを作成します。
public class UserProfile
{
public string Name { set;get;}
public List<UserImage> Images {set;get;}
public UserProfile()
{
Images=new List<UserImage>();
}
}
public class UserImage
{
public string URL { set;get;}
public string Caption { set;get;}
}
このViewModelをImagesコレクションで私のビューに返します
public ActionResult ShowUser(int id)
{
var user=new UserProfile();
user.Name="SomeName";
//to do : get images from db and set instead of being hard coded
user.Images.Add(new UserImage { URL="someImge1.jpg"});
user.Images.Add(new UserImage { URL="someImge2.jpg"});
return View(user);
}
強く型付けされたビューでは、次のように表示します。
@model UserProfile
<table>
foreach(var img in Model.Images)
{
<tr>
<td><img src=@img.URL" alt="@img.Caption" /></td>
</tr>
}
</table>
ビューにコードを混在させていません。画像の URL の設定はコントローラーで行う必要があります。画像が Content フォルダーにある場合は、Url.Content
HTML ヘルパー メソッドを使用してパスを取得できます。