- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 vb.net 中的一个 mvc3 Razor 项目。我需要创建一个动态表,它 1) 可以包含 1 列到 3 列和 1 到多行...表中的项目是复选框。我在下面的类中已经有工作的辅助方法但是下面的方法在返回时被抬高,因为它只是返回字符串以及 Ntd 函数的实际字符串,这只是为了了解此时应该发生的事情......我迷失了生成这些复选框可以绑定(bind),因此 Controller 发布方法将保存...如果我只是转储页面上的所有复选框,它们都会正确保存和更新。布局只是眼睛疼。。
这是当前 View
@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)
<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>
最佳答案
您的代码将无法正常工作。您将不得不在帮助程序中重新组合 lambda 表达式。我也建议你做这个CreateCheckBoxTable
helper 采用 lambda 表达式,而不仅仅是 CertBodyVM 列表,以便您可能希望在此表中使用的 CheckBox(或任何其他输入元素)具有正确的名称:
Public Module MyModule
Private indexerMethod As MethodInfo = GetType(IList(Of CertBodyVM)).GetMethod("get_Item")
Private certSelectedProperty As PropertyInfo = GetType(CertBodyVM).GetProperty("CertSelected")
Private certNameProperty As PropertyInfo = GetType(CertBodyVM).GetProperty("CertName")
Private certBodyIdProperty As PropertyInfo = GetType(CertBodyVM).GetProperty("CertBodyId")
<Extension()> _
Public Function CreateCheckBoxTable(Of TModel)(ByVal helper As HtmlHelper(Of TModel), ByVal ex As Expression(Of Func(Of TModel, IList(Of CertBodyVM)))) As IHtmlString
Dim table = New TagBuilder("table")
Dim metadata = ModelMetadata.FromLambdaExpression(ex, helper.ViewData)
Dim bodies = CType(metadata.Model, List(Of CertBodyVM))
Dim tableBody = New StringBuilder()
For i = 0 To bodies.Count - 1
Dim ex1 = MakePropertyExpression(Of TModel, Boolean)(ex, certSelectedProperty, i)
Dim ex2 = MakePropertyExpression(Of TModel, String)(ex, certNameProperty, i)
Dim ex3 = MakePropertyExpression(Of TModel, Integer)(ex, certBodyIdProperty, i)
Dim tr = New TagBuilder("tr")
Dim td = New TagBuilder("td")
td.InnerHtml = String.Concat(
helper.CheckBoxFor(ex1),
helper.DisplayFor(ex2),
helper.HiddenFor(ex3)
)
tr.InnerHtml = td.ToString()
tableBody.Append(tr.ToString())
Next
table.InnerHtml = tableBody.ToString()
Return New HtmlString(table.ToString())
End Function
Private Function MakePropertyExpression(Of TModel, TProperty)(ByRef ex As Expression(Of Func(Of TModel, IList(Of CertBodyVM))), ByRef pi As PropertyInfo, ByVal i As Integer) As Expression(Of Func(Of TModel, TProperty))
Return Expression.Lambda(Of Func(Of TModel, TProperty))(
Expression.Property(
Expression.Call(ex.Body, indexerMethod, Expression.Constant(i)),
pi
),
ex.Parameters()
)
End Function
End Module
@ModelType xxxxxx.CourseModel
...
@Html.CreateCheckBoxTable(Function(x) x.Bodies)
关于vb.net - Mvc3 HtmlHelper方法生成格式化的复选框表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194084/
我有一台 MySQL 服务器和一台 PostgreSQL 服务器。 需要从多个表中复制或重新插入一组数据 MySQL 流式传输/同步到 PostgreSQL 表。 这种复制可以基于时间(Sync)或事
如果两个表的 id 彼此相等,我尝试从一个表中获取数据。这是我使用的代码: SELECT id_to , email_to , name_to , status_to
我有一个 Excel 工作表。顶行对应于列名称,而连续的行每行代表一个条目。 如何将此 Excel 工作表转换为 SQL 表? 我使用的是 SQL Server 2005。 最佳答案 这取决于您使用哪
我想合并两个 Django 模型并创建一个模型。让我们假设我有第一个表表 A,其中包含一些列和数据。 Table A -------------- col1 col2 col3 col
我有两个表:table1,table2,如下所示 table1: id name 1 tamil 2 english 3 maths 4 science table2: p
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 1 年前。 Improve th
下面两个语句有什么区别? newTable = orginalTable 或 newTable.data(originalTable) 我怀疑 .data() 方法具有性能优势,因为它在标准 AX 中
我有一个表,我没有在其中显式定义主键,它并不是真正需要的功能......但是一位同事建议我添加一个列作为唯一主键以随着数据库的增长提高性能...... 谁能解释一下这是如何提高性能的? 没有使用索引(
如何将表“产品”中的产品记录与其不同表“图像”中的图像相关联? 我正在对产品 ID 使用自动增量。 我觉得不可能进行关联,因为产品 ID 是自动递增的,因此在插入期间不可用! 如何插入新产品,获取产品
我有一个 sql 表,其中包含关键字和出现次数,如下所示(尽管出现次数并不重要): ____________ dog | 3 | ____________ rat | 7 | ____
是否可以使用目标表中的LAST_INSERT_ID更新源表? INSERT INTO `target` SELECT `a`, `b` FROM `source` 目标表有一个自动增量键id,我想将其
我正在重建一个搜索查询,因为它在“我看到的”中变得多余,我想知道什么 (albums_artists, artists) ( ) does in join? is it for boosting pe
以下是我使用 mysqldump 备份数据库的开关: /usr/bin/mysqldump -u **** --password=**** --single-transaction --databas
我试图获取 MySQL 表中的所有行并将它们放入 HTML 表中: Exam ID Status Assigned Examiner
如何查询名为 photos 的表中的所有记录,并知道当前用户使用单个查询将哪些结果照片添加为书签? 这是我的表格: -- -- Table structure for table `photos` -
我的网站都在 InnoDB 表上运行,目前为止运行良好。现在我想知道在我的网站上实时发生了什么,所以我将每个页面浏览量(页面、引荐来源网址、IP、主机名等)存储在 InnoDB 表中。每秒大约有 10
我在想我会为 mysql 准备两个表。一个用于存储登录信息,另一个用于存储送货地址。这是传统方式还是所有内容都存储在一张表中? 对于两个表...有没有办法自动将表 A 的列复制到表 B,以便我可以引用
我不是程序员,我从这个表格中阅读了很多关于如何解决我的问题的内容,但我的搜索效果不好 我有两张 table 表 1:成员 id*| name | surname -------------------
我知道如何在 ASP.NET 中显示真实表,例如 public ActionResult Index() { var s = db.StaffInfoDBSet.ToList(); r
我正在尝试运行以下查询: "insert into visits set source = 'http://google.com' and country = 'en' and ref = '1234
我是一名优秀的程序员,十分优秀!