Asp.net mvc 4 配置要发送到服务器的项目列表

Asp.net mvc 4 配置要发送到服务器的项目列表,asp.net-mvc-4,telerik-mvc,Asp.net Mvc 4,Telerik Mvc,我希望用户能够在表单的客户端构建一个项目列表,然后在提交表单时将整个列表发送到服务器 每个项目都有几个可以设置的属性。例如,这里有一个订单模型: class Order { int Id; string Description; Guid UserId; string Product; } 在提交表单之前,用户应该能够添加和配置任意数量的订单 我想我可以用InCell编辑的Telerik网格来实现这一点。不幸的是,每个字段的可用选项列表将根据为其他字段选择的值而

我希望用户能够在表单的客户端构建一个项目列表,然后在提交表单时将整个列表发送到服务器

每个项目都有几个可以设置的属性。例如,这里有一个订单模型:

class Order
{
    int Id;
    string Description;
    Guid UserId;
    string Product;
}
在提交表单之前,用户应该能够添加和配置任意数量的订单

我想我可以用InCell编辑的Telerik网格来实现这一点。不幸的是,每个字段的可用选项列表将根据为其他字段选择的值而更改。我无法通过InCell编辑来实现这一点,因为我无法从javascript事件处理程序访问其他ui元素

我也尝试使用普通的内联编辑来实现这一点,但返回的唯一一项是要添加的新订单。我无法访问GridModel以添加新订单。在用户完成编辑之前,我不想保留订单列表

任何帮助都将不胜感激

编辑:如果我使用自己制作列表的解决方案,我会遇到层叠组合框的问题。根据列表中的索引,每个组合框都有一个类似“UserId_0”的名称

但现在如何获取下游列表?
这是我的两个组合框:

 <td>
        @(Html.Telerik().ComboBox()
            .Name("UserId_" + i.ToString())
            .BindTo(new SelectList(Model.UserIds, "Id", "Name"))
            .Placeholder("Select UserId...")
            .AutoFill(true)
            .CascadeTo("Product_" + i.ToString())
            .SelectedIndex(0))
 </td>
 <td>
       @(Html.Telerik().ComboBox()
            .Name("Product_" + i.ToString())
            .AutoFill(true)
            .DataBinding(binding => binding.Ajax().Select("GetProducts", "Order"))
            .Placeholder("Select Product...")
            .SelectedIndex(0))
 </td>

@(Html.Telerik().ComboBox())
.Name(“UserId_216;”+i.ToString())
.BindTo(新选择列表(Model.UserIds,“Id”,“Name”))
.Placeholder(“选择用户ID…”)
.自动填充(真)
.CascadeTo(“产品”+i.ToString())
.选择的索引(0))
@(Html.Telerik().ComboBox())
.Name(“产品”+i.ToString())
.自动填充(真)
.DataBinding(binding=>binding.Ajax().Select(“GetProducts”,“Order”))
.占位符(“选择产品…”)
.选择的索引(0))
我的控制器方法如下所示。这是一个骇人的地狱,但我如何访问的价值,否则

    public JsonResult GetProducts(Guid? UserId)
    {
        // Hack!
        ValueProviderResult userResult = ValueProvider.GetValue("UserId");
        for (int i=0; i < 10; i++)
        {
            userResult = ValueProvider.GetValue("UserId_" + i);
            if (userResult != null)
            {
                break;
            }
        }

        if (userResult != null)
        {
            // Get list of products based on value
            return Json(new SelectList(productList, "Id", "Name"));
        }
        else
        {
            return Json(null);
        }
    }
公共JsonResult GetProducts(Guid?用户ID) { //哈克! ValueProviderResult userResult=ValueProvider.GetValue(“用户ID”); 对于(int i=0;i<10;i++) { userResult=ValueProvider.GetValue(“UserId_u3;”+i); if(userResult!=null) { 打破 } } if(userResult!=null) { //根据价值获取产品列表 返回Json(新的SelectList(productList,“Id”,“Name”)); } 其他的 { 返回Json(null); } }
不要浪费时间通过一些小部件来实现这一点,最好检查如何使用复选框发送和实现自己的表单


如果你想使用一些小部件-你可以用类似的方式尝试网格。

不要浪费时间用一些小部件来实现这一点-最好检查如何使用复选框发送和实现你自己的表单


如果你想使用一些小部件,你可以用类似的方式尝试网格。

啊,这听起来更像我想做的。但是我如何实现级联组合框呢?当我指定要调用什么控制器方法来填充combobox时,我指定了一个与父combobox同名的参数。因此,如果我想要一个名为“UserId”的组合框来存储订单值,那么我将定义一个方法,将其级联到另一个组合框,方法如下:JsonResult GetProducts(int UserId)。但是当我列出这个列表时,所有的名字都像:“UserId\u 0”。如何让我的模型活页夹传递正确的值?在原始问题中做一个更好的解释。啊,这听起来更像我想做的。但是我如何实现级联组合框呢?当我指定要调用什么控制器方法来填充combobox时,我指定了一个与父combobox同名的参数。因此,如果我想要一个名为“UserId”的组合框来存储订单值,那么我将定义一个方法,将其级联到另一个组合框,方法如下:JsonResult GetProducts(int UserId)。但是当我列出这个列表时,所有的名字都像:“UserId\u 0”。如何让我的模型活页夹传递正确的值?请在原始问题中给出更好的解释。