Asp.net mvc 在MVC3Razor视图中使用Html帮助函数格式化表

Asp.net mvc 在MVC3Razor视图中使用Html帮助函数格式化表,asp.net-mvc,vb.net,asp.net-mvc-3,razor,html-helper,Asp.net Mvc,Vb.net,Asp.net Mvc 3,Razor,Html Helper,使用以下命令: MVC 3 VB.NET RAZOR视图引擎 Html助手类 在我的应用程序中,我有一个发送到视图并显示的列表(字符串)。我正在尝试以不超过8列宽到多行长的表格格式显示。我已经编写了一个自定义帮助器类来处理这个问题,但是视图显示了带有电子邮件地址的原始html代码,但它没有呈现为带有行等的表。。有没有办法纠正这个问题。。下面是助手类、模板,最后是视图 Imports System.Runtime.CompilerServices Public Module TableHelp

使用以下命令:

  • MVC 3
  • VB.NET
  • RAZOR视图引擎
  • Html助手类
在我的应用程序中,我有一个发送到视图并显示的列表(字符串)。我正在尝试以不超过8列宽到多行长的表格格式显示。我已经编写了一个自定义帮助器类来处理这个问题,但是视图显示了带有电子邮件地址的原始html代码,但它没有呈现为带有行等的表。。有没有办法纠正这个问题。。下面是助手类、模板,最后是视图

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

从中可以看出,html标记正在失去浏览器所采用的格式…

。默认情况下,网络字符串是html编码的。您可以使用
Html.Raw()
打印原始Html,也可以让它返回一个
MvcHtmlString
,MVC引擎知道该字符串已经编码,不应该再次编码


参考资料:

非常感谢你,伙计。。当我意识到函数是以字符串的形式返回时,我开始着手这一点。直到现在才知道有什么是MvcHtmlString类。。。对于遇到的所有问题,我已经编辑了上面的helper函数,以显示有效的解决方案。。
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;xxxxxxxxx@yahoo.com; &lt;/td&gt;&lt;td&gt;xxxxxxxx@xxxxxxx.net; &lt;/td&gt;&lt;td&gt;xxxxx.xxxxxxxx@xxxxx; &lt;/td&gt;&lt;td&gt;