MVC从控制器动态附加img标记

时间:2014-01-17 20:18:26

标签: asp.net-mvc html5 model-view-controller

我想根据特定用户的数量添加未知数量的图像;我已经使用.Append函数为div,标签,输入和它的工作正常,但当我想附加源它不工作! 那怎么能这样呢? 我试过这个:

 `  string sc = "$('<img/>', {src=\"~/Content/themes/img2.jpg\" alt=\"\",class:'table-wrapper'}).appendTo(finalDalata);";

返回JavaScript(sc)`

finalDalata是我的Div名字 那么我做错了什么?

2 个答案:

答案 0 :(得分:0)

你的appendTo代码无效,它需要一个选择器,你的图像属性格式不正确,所以它应该是:

string sc = "$('<img/>', { src:'~/Content/themes/img2.jpg', alt:'', class:'table-wrapper'}).appendTo('#finalDalata');"

但是,控制器应该返回数据而不是控制(想到漏洞和注入),所以更好的方法是在javascript中在View端创建一个AppendImage函数:

function AppendImage(attributes)
{
    $('<img/>', attributes).appendTo('#finalDalata');
}

注意:您应该在确定之前清理属性。

然后仅返回属性列表:

var images = new List<dynamic>();
// Do this for each images
images.Add(new { src="~/Content/themes/img2.jpg", alt="", class="table-wrapper"});
return Json(images);

在ajax的成功中你可以:

success: function (data) {
    data.foreach( function (item) {
        AppendImage(item);
    });
}

答案 1 :(得分:0)

TagBuilder

解决
TagBuilder tag = new TagBuilder("img");
            tag.Attributes.Add("id", "myImage");
            tag.Attributes.Add("src", "/imgs/" + UserName + ".jpg");
            tag.Attributes.Add("alt", "my image");
            tag.Attributes.Add("class", "imgsClass");

然后将tag转换为字符串并将其传递回view

日Thnx