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 个属性。