Это проект mvc3 Razor в vb.net. Мне нужно создать динамическую таблицу, в которой 1) может содержать от 1 до 3 столбцов и от 1 до многих строк ... Элементы таблицы - это флажки. У меня уже есть вспомогательные методы в классе ниже, но метод ниже подталкивается к возврату, так как он просто возвращает строку вместе с фактической строкой функции Ntd, это просто для представления о том, что должно произойти в этот момент ... Я теряюсь, чтобы сгенерировать эти флажки вдали которые могут быть привязаны, поэтому метод постпостановок контроллера будет сохранять ... Если я просто сброшу все флажки на странице, они будут сохранять и обновлять правильно. Раскладка просто глаз болит ..Mvc3 HtmlHelper метод для создания форматированной таблицы Checkbox
Это текущий вид
@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
Это вспомогательный метод
<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
вызов метода помощника я только планирую заменить для каждого петля и ее содержимое с
@Html.CreateCheckBoxTable(Model.Bodies)
Этот метод генерирует соответствующую таблицу с помощью коррекции т строк и столбцов, но я потерял на checkboxfor ..
Ниже выходной ток, который генерируется ..
<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>
Что происходит, когда вы удалите речевые следы от этой линии? Ntd ("@ Html.CheckBoxFor (функция (модель) model.Bodies (i) .certSelected) @ Html.DisplayFor (функция (f) f.Bodies (i) .certName) @ Html.HiddenFor (модель (модель). Bodies (i) .certBodyId) ") – Zeddy
@ ZafKhan Я изменил эту строку следующим образом:' htmlDisplayer = htmlDisplayer + Ntd (Html.CheckBoxFor (функция (model) model.Bodies (i) .certSelected) Html.DisplayFor (Функция (f) f.Bodies (i) .certName) Html.HiddenFor (функция (модель) model.Bodies (i) .certBodyId)) 'и это говорит, что' CheckBoxFor' не является членом Html. – Skindeep2366
@ Skindeep2366, попробуйте мой ответ, это сработает ... –