HTML.DisplayFor 方法使用字符串
HTML.DisplayFor method using string
在我的 ASP.Net MVC 应用程序中,我有一个循环,我想使用 HTML.DisplayFor 方法在 HTML 中显示不同的属性值。但是它不会接受一个字符串值来指向模型参数。
普通模式:
<img src="@Html.DisplayFor(model => model.Image_1)" />
我的循环:
@for (int i = 1; i < 11; i++)
{
string currentImage = "Model.Image_" + i;
if ((@Html.DisplayFor(model => "Model.Image_" + i ).ToString()) != "")
{
<div>
<img src="@Html.DisplayFor(model => currentImage)" />
</div>
}
}
我在 img src
中的成绩只是 currentImage
。
我希望它是 Model.Image_" + i
。
我该怎么做?
如果您有更好的方法,我们将不胜感激。
我的图像应该有自己的模型 -class,你觉得?
您可以像这样使用 reflection 动态获取 属性 的值。
@for (int i = 1; i < 11; i++)
{
string imagePropName= "Image_" + i;
string imageSrc = Model.GetType().GetProperty(imagePropName).GetValue(Model) as string;
if (!string.IsNullOrEmpty(imageSrc))
{
<div>
<img src="@Url.Content(imageSrc)" />
</div>
}
}
另一种选择是将 <img src="@Url.Content(Model.Image_1)
、<img src="@Url.Content(Model.Image_2) />
写 10 次。我的意思是如果你已经创建了10个属性,不妨与实现保持一致。
但正如斯蒂芬所说,只需获取 List
ImagePaths 并在 View
中循环遍历它们。如果要求更改为显示 20 张图像,则您必须再添加 10 个属性。
在我的 ASP.Net MVC 应用程序中,我有一个循环,我想使用 HTML.DisplayFor 方法在 HTML 中显示不同的属性值。但是它不会接受一个字符串值来指向模型参数。
普通模式:
<img src="@Html.DisplayFor(model => model.Image_1)" />
我的循环:
@for (int i = 1; i < 11; i++)
{
string currentImage = "Model.Image_" + i;
if ((@Html.DisplayFor(model => "Model.Image_" + i ).ToString()) != "")
{
<div>
<img src="@Html.DisplayFor(model => currentImage)" />
</div>
}
}
我在 img src
中的成绩只是 currentImage
。
我希望它是 Model.Image_" + i
。
我该怎么做?
如果您有更好的方法,我们将不胜感激。 我的图像应该有自己的模型 -class,你觉得?
您可以像这样使用 reflection 动态获取 属性 的值。
@for (int i = 1; i < 11; i++)
{
string imagePropName= "Image_" + i;
string imageSrc = Model.GetType().GetProperty(imagePropName).GetValue(Model) as string;
if (!string.IsNullOrEmpty(imageSrc))
{
<div>
<img src="@Url.Content(imageSrc)" />
</div>
}
}
另一种选择是将 <img src="@Url.Content(Model.Image_1)
、<img src="@Url.Content(Model.Image_2) />
写 10 次。我的意思是如果你已经创建了10个属性,不妨与实现保持一致。
但正如斯蒂芬所说,只需获取 List
ImagePaths 并在 View
中循环遍历它们。如果要求更改为显示 20 张图像,则您必须再添加 10 个属性。