Questo è un progetto mvc3 Razor in vb.net. Ho bisogno di creare una tabella dinamica che 1) possa contenere 1 colonna in 3 colonne e 1 in molte righe ... Gli elementi nella tabella sono caselle di controllo. Ho già metodi di supporto operativi nella classe sottostante, tuttavia il metodo qui sotto è sollevato sul ritorno poiché restituisce semplicemente la stringa insieme alla stringa effettiva della funzione Ntd, questo è lì semplicemente per un'idea di cosa dovrebbe accadere a quel punto ... Sono perso per generare queste check-in in che può essere vincolato in modo che il metodo di post del controller salverà ... Se metto semplicemente tutte le caselle di controllo sulla pagina, verranno tutte salvate e aggiornate correttamente. Il layout è solo un occhio dolente ..Mvc3 Metodo HtmlHelper per generare la tabella Checkbox formattata
Questa è la vista corrente
@ModelType xxxxxx.CourseModel
@Code
ViewData("Title") = "Edit Courses"
End Code
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Using Html.BeginForm(Nothing, Nothing, FormMethod.Post, New With {.enctype = "multipart/form-data"})
@Html.ValidationSummary(True)
@<fieldset>
<legend>Edit Courses</legend>
@Html.HiddenFor(Function(model) model.cId)
<table style="float: left">
<tr>
<th>Certification Bodies</th>
</tr>
<tr>
@For _i As Integer = 0 To Model.Bodies.Count - 1
Dim i = _i
@<td>
@Html.CheckBoxFor(Function(model) model.Bodies(i).certSelected)
@Html.DisplayFor(Function(f) f.Bodies(i).certName)
@Html.HiddenFor(Function(model) model.Bodies(i).certBodyId)
</td>
Next
</tr>
<tr>
<th><input type="submit" value="Save" /></th>
</tr>
</table>
</fieldset>
end using
Questo è il metodo di supporto
<Extension()> _
Public Function CreateCheckBoxTable(ByVal helper As HtmlHelper, ByVal d As List(Of CertBodyVM)) As MvcHtmlString
Dim htmlDisplayer As String = Table()
Dim counter As Integer = 0
For Each item In d
If counter = 0 Then
htmlDisplayer = htmlDisplayer + NRow()
End If
counter += 1
If Not counter >= 3 Then
htmlDisplayer = htmlDisplayer + Ntd("@Html.CheckBoxFor(Function(model) model.Bodies(i).certSelected)@Html.DisplayFor(Function(f) f.Bodies(i).certName)@Html.HiddenFor(Function(model) model.Bodies(i).certBodyId)")
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 TdEnd() As String
Return String.Format("</td>")
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
Per chiamare il metodo di supporto ho solo intenzione di sostituire il per ogni loop e il suo contenuto con
@Html.CreateCheckBoxTable(Model.Bodies)
Questo metodo genera la tabella appropriata con il correc t righe e colonne ma sono persi sul checkboxfor ..
Di seguito si riporta la corrente di uscita che viene generato ..
<tr><td><table><tr><td>@Html.CheckBoxFor(Function(model) model.Bodies(i).certSelected)@Html.DisplayFor(Function(f) f.Bodies(i).certName)@Html.HiddenFor(Function(model) model.Bodies(i).certBodyId)</td></table></td></tr>
Cosa succede quando si rimuove i segni di discorso da questa linea? Ntd ("@ Html.CheckBoxFor (modello Function (model). Bodies (i) .certSelected) @ Html.DisplayFor (Function (f) f.Bodies (i) .certName) @ Html.HiddenFor (modello di funzione (modello). Corpi (i) .certBodyId) ") – Zeddy
@ZafKhan Ho modificato la riga da leggere:' htmlDisplayer = htmlDisplayer + Ntd (Html.CheckBoxFor (modello di funzione (modello). Body (i) .certSelected) Html.DisplayFor (Funzione (f) f.Bodies (i) .certName) Html.HiddenFor (Function (model) model.Bodies (i) .certBodyId)) 'e sta dicendo che' CheckBoxFor' non è un membro di Html. – Skindeep2366
@ Skindeep2366, prova la mia risposta funzionerà ... –