Asp.net mvc 3 将文本追加到Razor中的MvcHtmlString

Asp.net mvc 3 将文本追加到Razor中的MvcHtmlString,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,尝试使用循环在Razor中构建一系列表行: MvcHtmlString filesList = MvcHtmlString.Create(""); foreach (var file in orderRow.Files) { fileList = fileList + "<tr><td colspan='2'><a href='http://@file.Location/file.FileName' target='_blank'>@file.Des

尝试使用循环在Razor中构建一系列表行:

MvcHtmlString filesList = MvcHtmlString.Create("");
foreach (var file in orderRow.Files)
{
    fileList = fileList + "<tr><td  colspan='2'><a href='http://@file.Location/file.FileName' target='_blank'>@file.Description </a></td></tr>";
}
    @filesList
}
MvcHtmlString filesList=MvcHtmlString.Create(“”);
foreach(orderRow.Files中的var文件)
{
fileList=fileList+“”;
}
@文件列表
}
这让我觉得我在使用上述代码的正确轨道上,但我的工作与Razor和我的里程数不同


thx

假设您正在
.cs
文件中编写静态方法

没有意义。
MvcHtmlString
实际上不会转义任何内容;它只是告诉Razor/ASPX不要自行逃脱

您应该正常使用
StringBuilder
组装字符串,然后返回
newhtmlstring(builder.ToString())


如果你在一个剃刀页面,整个事情是毫无意义的;请看另一个答案。

你把问题复杂化了。您根本不需要为您的情况构建字符串,因为您只是在循环之后直接输出字符串。您可以这样做:

@foreach (var file in orderRow.Files) {
    <tr><td  colspan='2'><a href='http://@file.Location/file.FileName' target='_blank'>@file.Description </a></td></tr>
}
@foreach(orderRow.Files中的var文件){
}

不能在普通字符串中使用Razor语法。您需要手动连接和转义对象。在这种情况下,您正在构建一个大字符串,然后立即输出它。如果这是真正的代码,不要费心构建一个字符串,只需编写输出。您是在编写一个普通的方法还是在一个剃刀页面中?