Asp.net MVC - 可变数量的条目

时间:2011-01-30 07:30:08

标签: c# jquery asp.net-mvc

我有一个用户可以输入银行交易的视图。因此,他们选择一个帐户,一个收款人,一个类别(基于所选收款人的允许类别)和一个子类别(基于类别选择) - 和一个值。这是通过JQuery完成的,并且正在运行。

但是,每个交易需要选择多个类别/子类别/金额(拆分交易)。

我想在类别/子类别/金额部分添加一个'网格'(所以,一个表格)和一个标记为“添加”的按钮,然后将选定的Cat / SubCat / Amount添加到一个网格,然后清空现有的选择,准备好添加更多 - 允许用户根据需要添加任意数量的“金额”。

但是 - 怎么样?

在添加按钮上,我想我需要将CategoryId,SubCategoryId和Amount添加到List<>?然后根据该列表构建摘要网格?

我希望屏幕没有闪烁。这是否必须通过JQuery完成?使用JQuery构建表,然后在表单提交时将cat / subcats / amount列表发送回服务器?

1 个答案:

答案 0 :(得分:1)

您可能需要查看jQuery tmpl插件。此插件允许您构建客户端模板。这是您可能希望在您的网站上使用的内容。

您定义一个表格行的模板,每次只根据该模板添加一个新行。 我会给表行中的每个表单项一个额外的索引变量(例如第一行的name =“CategoryID-1”)。插入新行时,只需将当前索引发送到模板,并确保模板将当前索引添加到表单元素的名称中。

然后在服务器端,您可以进行简单的查询以获取所有权限。

int[] indices = Request.Form.AllKeys.Where(k => k.StartsWith("CategoryID-")).Select(k => Convert.ToInt32(k.Substring(11))).ToArray();

foreach (int index in indices)
{
    string cat = Request.Form["CategoryID-" + index.ToString()];
    string subcat = Request.Form["SubCategoryID-" + index.ToString()];
    //etc.

}