繁体   English   中英

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

[英]How to concatenate the img src in asp.mvc aspx view page?

在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

假设在视图上方的某个位置定义了roleid ,则应以这种方式形成属性值:

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

注意事项:

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

我想谈谈几件事。

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类的强类型视图,而不是Model。

2)不要在视图中直接使用IMG标记,而是使用扩展方法为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);

希望能有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM