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
这是我看它在什么视图页面的源代码是显示一个片段浏览器:
<table><tr><td>[email protected]hoo.com; </td><td>[email protected]; </td><td>[email protected]; </td><td>
作为可以看出它的HTML标记正在失去其格式,浏览器拿起...
感谢很多人。我就开始坐上去,当我实现的功能正在恢复为字符串。到目前为止,我还不知道MvcHtmlString类是什么......对于所有这些,我编辑了上面的帮助函数来显示工作解决方案。 – Skindeep2366 2012-08-14 02:36:29