【发布时间】:2011-01-14 09:10:56
【问题描述】:
全部,
我已经阅读了很多关于 Checkboxes 和 ASP.MVC 的帖子,但我并没有那么聪明。
我的场景:
我有一个强类型视图,我将汇总对象的集合传递给视图以在 for-each 中呈现。此摘要对象包含基于唯一 ID 的标签数据。我还在该行中添加了一个复选框,因此可以通过:
<td>
<%= Html.CheckBox("markedItem", Model.MarkedItem, new { TrackedItemId = Model.Id })%>
</td>
当我执行 POST 以获取提交的结果时,我的操作方法会取回强类型 ViewModel,但我用于创建列表的原始摘要对象未填充。
好吧,这很烦人,但我能理解为什么,所以我会忍受它。
然后我要做的是向我的 ViewModel 添加一个名为“MarkedItem”的新属性,它是一个字符串集合。
在回发时,如果复选框已更改,则此标记项目将填充 之前和之后 状态,但没有告诉我它们用于哪个键。澄清一下,如果我发送这个
- TrackedItemId = A,值 = 假
- TrackedItemId = B,值 = true
- TrackedItemId = C,值 = 假
并将页面设置为:
- TrackedItemId = A,值 = true
- TrackedItemId = B,值 = true
- TrackedItemId = C,值 = 假
我会拿回这个:
- MarkedItem[0] = 真
- MarkedItem[1] = 假
- MarkedItem[2] = 真
- MarkedItem[3] = 假
换句话说,[0] 是新值,[1] 是旧值,[2] 和 [3] 表示未更改的值。
我的问题是:
- 这对吗 - 我之前和之后都是这样?有没有办法只发送最新的值?
- 如何获取已添加的自定义属性 (TrackedItemId),以便为返回的字符串数组添加含义?
到目前为止,我喜欢 MVC,但它不能处理像这样简单的东西真的很令人困惑。我也是一个 JavaScript 菜鸟,所以我真的希望这不是答案,因为我想在我的自定义视图模型中返回数据。
请让任何解释/建议简单:)
【问题讨论】:
-
我想我将不得不为此编写一个特殊的 HTML Helper 扩展,但我的问题是,当我在 ModelBinder 期间查看返回的值时,我根本没有额外的能够解析结果的属性。我一定是遗漏了什么,因为这肯定是一个明显的要求???
标签: asp.net-mvc checkbox checkboxlist