2012-08-14 92 views
0

使用下表:格式化使用HTML辅助功能MVC 3 Razor视图

  • MVC 3
  • VB.NET
  • Razor视图引擎
  • HTML辅助类

在我的应用程序中,我有一个发送给视图并显示的(字符串)列表。我正在尝试以不超过8列宽至多行的表格格式显示此显示。我已经写了一个自定义的助手类来处理这个问题,但视图显示的是带有电子邮件地址的原始html代码,但它并不像表格那样用行来表示。任何想法如何解决这个问题..下面是helper类,模板,最后是视图。

Imports System.Runtime.CompilerServices 
Public Module TableHelper 
<Extension()> _ 
Public Function CreateEmailTable(ByVal helper As HtmlHelper, ByVal emaillist As List(Of String)) As MvcHtmlString 
    Dim htmlDisplayer As String = Table() 
    Dim counter As Integer = 0 
    For Each item In emaillist 
     If counter = 0 Then 
      htmlDisplayer = htmlDisplayer + NRow() 
     End If 
     counter += 1 
     If Not counter >= 8 Then 
      htmlDisplayer = htmlDisplayer + Ntd(item) 
     Else 
      counter = 0 
      htmlDisplayer = htmlDisplayer + CRow() 
     End If 
    Next 
    htmlDisplayer = htmlDisplayer + CTable() 
    Dim x As MvcHtmlString = MvcHtmlString.Create(htmlDisplayer) 
    Return x 
End Function 
Public Function Table() As String 
    Return String.Format("<table>") 
End Function 
Public Function CTable() As String 
    Return String.Format("</table>") 
End Function 
Public Function NRow() As String 
    Return String.Format("<tr>") 
End Function 
Public Function CRow() As String 
    Return String.Format("</tr>") 
End Function 
Public Function Ntd(ByVal text As String) As String 
    Return String.Format("<td>{0}</td>", text) 
End Function 
End Module 

模板的看法是:

@ModelTYPE List(Of String) 
@Html.CreateEmailTable(Model) 

最后的观点是:

Modeltype xxxxxxxxx.EmailsVM 
@Code 
ViewData("Title") = "Mass Emails Sent" 
End Code 
@Using Html.BeginForm 
@<fieldset> 
<p> 
@Html.Partial("_EmailsVM", Model.failEmList) 
</p> 
</fieldset> 
End Using 

这是我看它在什么视图页面的源代码是显示一个片段浏览器:

&lt;table&gt;&lt;tr&gt;&lt;td&gt;[email protected]hoo.com; &lt;/td&gt;&lt;td&gt;[email protected]; &lt;/td&gt;&lt;td&gt;[email protected]; &lt;/td&gt;&lt;td&gt; 

作为可以看出它的HTML标记正在失去其格式,浏览器拿起...

回答

1

.NET字符串默认情况下是HTML编码。您可以使用Html.Raw()来打印原始HTML,或者让它返回一个MvcHtmlString,MVC引擎知道它已经被编码,不应再次编码。

参考:MvcHtmlString Class - MSDN

+0

感谢很多人。我就开始坐上去,当我实现的功能正在恢复为字符串。到目前为止,我还不知道MvcHtmlString类是什么......对于所有这些,我编辑了上面的帮助函数来显示工作解决方案。 – Skindeep2366 2012-08-14 02:36:29