Asp.net mvc 向html元素添加属性(使用mvc和razor)

Asp.net mvc 向html元素添加属性(使用mvc和razor),asp.net-mvc,view,attributes,Asp.net Mvc,View,Attributes,我有如下的部分观点 @model BtImage @{ string attributes = ""; foreach (string key in Model.Attributes.Keys) { string value = Model.Attributes[key] attributes += key + "=" + value + " "; } } <img @(attributes) src="edit.png"

我有如下的部分观点

@model BtImage

@{
    string attributes = "";
    foreach (string key in Model.Attributes.Keys)
    {
        string value = Model.Attributes[key]
        attributes += key + "=" + value + " ";
    }
}

<img @(attributes) src="edit.png" alt="" />
@model BtImage
@{
字符串属性=”;
foreach(Model.Attributes.Keys中的字符串键)
{
字符串值=Model.Attributes[键]
属性+=键+“=”+值+”;
}
}
如果每个属性值都是一个单词,那么一切都可以

但是,如果任何属性的值有多个单词(例如,title可以是多个单词),则上面的代码会打印如下结果

<img title="edit" news alt="" />

但是我想要

<img title="edit news" alt="" />


我应该如何做到这一点。

正如twearay所说,构建字符串的方式是错误的,同时使用string.Format可以帮助您更好地阅读代码。这会管用的(而且看起来不错!)

@model BtImage
@{
字符串属性=”;
foreach(Model.Attributes.Keys中的字符串键)
{
字符串值=Model.Attributes[键];
attributes+=string.Format(“{0}=\”{1}\”,键,值);
}
}

您应该自己在属性字符串中添加引号,如下所示。另外,我建议使用
@Html.Raw(attributes)
来避免一些意外的编码。
@model BtImage

@{
    string attributes = "";
    foreach (string key in Model.Attributes.Keys)
    {
        string value = Model.Attributes[key];
        attributes += string.Format("{0}=\"{1}\" ", key, value);
    }
}

<img @Html.Raw(attributes) src="edit.png" alt="" />