我有一个模型,它是一个对象列表,我将其渲染到表单内的页面。 用户使用复选框选择对象,点击提交,模型回发,我对所选项目执行一些处理。
@using (Html.BeginForm("Method", "Controller"))
{
<table id="mytable">
<tr>
<th>Some Properties</td>
<th>Selected</td>
</tr>
@foreach (var item in Model)
<tr>
@Html.HiddenFor(m => item.Id)
<td>@item.Id</td>
<td>@Html.CheckBoxFor(m => item.Selected)</td>
</tr>
</table>
<input id="btnGo" type="submit" name="submitButton" value="Go"/>
}
(基本上就是这样。我实际上并不认为以上是有效的 - 我必须将其分开,以便这部分内容在局部视野中 - 但我还是确定你明白了。)
通常没有很多行,但有时会有很多行。
当它变得非常高(2000加)时,即使用户只勾选1个框,也可能需要 10分钟来回发整个模型,当不需要99.9%时。
我如何仅从模型中提交相关(已检查)项目?
我能让它工作的唯一方法就是只提交一些javascript来强制它进入网址。
$(document).ready(function () {
$('#btnGo').click(function () {
var idArray = new Array();
$("#mytable input:checkbox:checked").each(function () {
idArray.push(this.id);
});
window.location = "/My.Web.Page/Controller/Method?selectedIds=" + idArray;
});
});
但我不喜欢它,因为我不得不对网址进行硬编码,用户只需点击“刷新”即可。然后在浏览器上基本上重新处理所有内容。
答案 0 :(得分:3)
好吧,只使用html你不能做部分回发。如果您只需要回发一些数据,则应使用Ajax。
顺便说一下,对2000件物品进行10分钟处理?你在做什么数据?!