1

我想让用户能够使用 jQuery 而没有 ajax 将项目添加到视图模型。

我不想使用 ajax 的原因是因为没有 ajax 用户必须单击保存,这会减少他们意外更改某些内容的机会。

我有它的工作,但它似乎有点像一个黑客。

'<tr>'+
'<td class="detail-priority">' +
'<input id="ComplianceSeverityLevel_4__ComplianceSeverityLevelId" type="hidden" value="-1" name="ComplianceSeverityLevel[4].ComplianceSeverityLevelId" data-val-required="The ComplianceSeverityLevelId field is required." data-val-number="The field ComplianceSeverityLevelId must be a number." data-val="true">' +
'<input id="ComplianceSeverityLevel_4__Priority" class="valid" type="text" value="0" name="ComplianceSeverityLevel[4].Priority" data-val-required="The Priority field is required." data-val-number="The field Priority must be a number." data-val="true">' +
'</td>' +
'</tr>'

我基本上只是复制 ASP.NET MVC 生成的 HTML,将 ID 值设置为 -1,以便它知道创建一个新条目。

我还必须生成数组索引。这似乎不是解决此问题的最佳方式。关于这个主题有几篇文章,但它们都涉及 ajax。

无论如何,我可以更有效地做到这一点吗?

4

1 回答 1

1

您可以做的是向控制器中的模型添加一个“新”项目(如果您愿意,也可以在您的视图中)。这样,您的收藏中至少有 1 件商品。

现在,无需添加硬编码的 HTML(每次更改视图时都必须更新),您可以.clone()页面上的最后一项并更新必要的 ID。

提交时,您可以禁用 HTML 中最后一项的输入字段,以便不包含空项,或者您可以检查服务器端以排除最后一项。

于 2013-08-07T11:42:36.807 回答