我一直在寻找约20分钟,但没有回答这个问题。我非常感谢任何人对此的意见。
我在表格行中有一个单元格(td),并且该单元格大部分时间都包含一行文本,但偶尔会包含两行(它包含的确切文本取决于服务器端处理) 。如果将一行的文本组合在一起并且包裹起来,我并不介意,但如果添加第二行,我需要能够开始一个新行。因此我尝试使用下面的换行符。
我无法将其分解为两个<td>
元素,当我将它们包含在文本服务器中时,我似乎无法使\n
或<br/>
工作 - 侧。如果我这样做,它们只是在单元格内呈现为纯文本。
基本上,我希望能够避免使用javascript客户端分析文本来添加特殊字符。我甚至不确定这是否有效。是否有一些css / html / javascript / jquery技巧可以完成这项工作?
构建文本的C#代码很简单,这是一个例子:
caseDueDate = "Reading Response due: " + readingDueDate.ToString();
该字段的Razor代码如下所示:
<td>@Model.patients.ElementAt(ii).CaseDue</td>
回归结果的正确性很好。 T'只是格式化... =)
答案 0 :(得分:1)
在您的代码中的某些时刻,某些内容正在将您的<br />
标记转换为htmlentities,因为这些标记不应在html输出中呈现为纯文本。
您的输出是否包含在htmlentities()
来电或类似内容中?
答案 1 :(得分:1)
带有TD的BR标签应该可以工作......服务器端代码可能会自动转义html以防止跨站点脚本。根据所使用的特定服务器软件,有多种方法可以选择性地禁用它。
答案 2 :(得分:1)
你在服务器上使用ASP.NET MVC,对吗?
如果您想在服务器端手动控制换行符的使用,可以考虑两个选项:
(1)您可以为CaseDue属性编写显示模板(部分视图)。如果使用UIHint属性标记模型,请执行以下操作:
[UIHint("MyPartialView")]
public string CaseDue { ... }
...然后在您的视图中使用HtmlHelper,例如:
@Html.DisplayFor(m => m.patients.ElementAt(index).CaseDue)
(2)你可以为HtmlHelper类编写一个扩展方法,它创建并返回一个MvcHtmlString实例。 Razor不对这些进行编码,因此您可以在返回值中包含所需的任何标记。例如,大致:
public static MvcHtmlString TdForCaseDue(this HtmlHelper html, string[] lines) {
TagBuilder td = new TagBuilder("td");
td.InnerHtml = lines[0];
for(int i = 1; i < lines.Length; i++) {
td.InnerHtml += (new TagBuilder("br").ToString());
td.InnerHtml += lines[i];
}
return new MvcHtmlString(td.ToString());
}