如何使用MVC 3(Razor)向图像添加动态源

use*_*964 2 asp.net-mvc razor asp.net-mvc-3

我是Mvc的新手,我的图像可能有正确或错误的图像,具体取决于用户给出的答案.

这是我目前的代码:

@if (Model.IsCorrect) 
    {
        <img src="@Url.Content(@"~/Content/images/Default_Correct.png")" alt="correct" />
    }
    else
    {
        <img src="@Url.Content(@"~/Content/images/Default_Wrong.png")" alt="wrong" /> 
    }
Run Code Online (Sandbox Code Playgroud)

这完美地运作但我认为必须有一个更清洁/更好的方法来做这样的事情.

Dar*_*rov 9

如果你像我一样讨厌用意大利面条代码污染你的观点,你可以写一个自定义助手:

public static class ImageExtensions
{
    public static IHtmlString MyImage(this HtmlHelper htmlHelper, bool isCorrect)
    {
        var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
        var img = new TagBuilder("img");
        if (isCorrect)
        {
            img.Attributes["alt"] = "correct";
            img.Attributes["src"] = urlHelper.Content("~/Content/images/Default_Correct.png");
        }
        else
        {
            img.Attributes["alt"] = "wrong";
            img.Attributes["src"] = urlHelper.Content("~/Content/images/Default_Wrong.png");
        }
        return MvcHtmlString.Create(img.ToString(TagRenderMode.SelfClosing));
    }
}
Run Code Online (Sandbox Code Playgroud)

在您看来简单地说:

@Html.MyImage(Model.IsCorrect)
Run Code Online (Sandbox Code Playgroud)