如何在asp.mvc aspx视图页面中连接img src?

时间:2014-04-03 17:15:07

标签: c# html asp.net-mvc

在asp.net mvc aspx页面中,我正在编写像这样的html输入图像。

<img src="/public/images/"+<%: roleid %>+".jpg" alt="please load the image.." />

在上面的代码roleid -1来自db.but src没有正确形成。 预期结果 src:/public/images/1.jpg但是src没有正确形成。请告诉我如何在aspx视图引擎中连接字符串?

thnaks

2 个答案:

答案 0 :(得分:1)

假设roleid在视图中的某处定义,您应该以这种方式形成属性值:

src='<%: string.Format("/public/images/{0}.jpg", roleid) %>'

注意事项:

  1. 引用模式:整个值的单引号,C#代码中字符串的双引号。
  2. <%: %>标记
  3. 中生成值字符串

答案 1 :(得分:0)

我想谈谈几件事。

1)在View中运行时生成图像URL不是一个好习惯。您应该像这样使用ViewModel

public class MyViewModel
{
  public MyModel m;
  public void MyViewModel(MyModel m){this.m=m;}

  public string ActualIMageUrl
  {
    get
    {
       return "public/Images/"+m.RoleId+".jpg";
    }
  }
}

现在使您的视图成为此ViewModel类的强类型视图,而不是模型。

2)不要在你的View中直接使用IMG标签,而是使用extenion方法为HtmlHelperClass创建新方法,如下所示,

public static class MVCExtensions
{
    public static MvcHtmlString Image(this HtmlHelper helper, string src, string altText, string height)
    {
        var builder = new TagBuilder("img");
        builder.MergeAttribute("src", src);
        builder.MergeAttribute("alt", altText);
        builder.MergeAttribute("height", height);
        return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
    }
}

现在在视图中

@model MyViewModel
.
.
.
@Html.Image(Model.ActualImageUrl);

希望有所帮助