如何在asp.net mvc中将数据网格devextreme发布到控制器

时间:2017-03-06 17:30:12

标签: jquery html devextreme

我使用了devextreme的datagrid。 如何将数据网格发送到asp.net mvc中的控制器? 我在我看来试过这个:

  @using (Html.BeginForm("action-name", "controller-name", FormMethod.Post))
            {
                <div id="frm"></div>
                <div id="grid"></div>
                <div class="submit-button" id="submitBtn"></div>
            }

这是我的模特:

public class class-name
    {
        public int id { get; set; }
        public string Name { get; set; }
        public string FName { get; set; }
        public ContactInfo ContactInfo { get; set; }
    }

 public class ContactInfo
    {
        public string type { get; set; }
        public string value { get; set; }
    }

在我的控制器中,我获取了表单数据(类名),但网格数据(ContactInfo)为空

3 个答案:

答案 0 :(得分:3)

你可以为每个列使用cellTemplate,在cellTemplate中你必须使用隐藏输入。例如假设这段代码:

factory.Add().DataField("Mobile")
             .CellTemplate(@<text>
              <%= text %>
              <input type='hidden' name='Addresses[<%= rowIndex %>].Mobile' value='<%= value %>' />
              </text>);

text,rowIndex,value是DevExtreme对象。 有关详细信息,请查看链接的 cellInfo 部分。 https://js.devexpress.com/Documentation/ApiReference/UI_Widgets/dxDataGrid/Configuration/columns/?search=columns

答案 1 :(得分:2)

在您的情况下,您可以使用ASP.NET MVC Wrappers for DevExtreme。在这种情况下,您将能够将网格绑定到WebApi控制器,如下所示:

@(Html.DevExtreme().DataGrid()
    .DataSource(ds => ds
        .WebApi()
        .Controller("GridData")
        .Key("OrderID")
        .LoadAction("GetAllOrders")
        .InsertAction("InsertOrder")
        .UpdateAction("UpdateOrder")
        .DeleteAction("RemoveOrder")
    )
)

控制器:

 public class DataGridWebApiController : ApiController {

    [HttpGet]
    public HttpResponseMessage GetAllOrders(DataSourceLoadOptions loadOptions) {
        //...
    }

    [HttpPost]
    public HttpResponseMessage InsertOrder(FormDataCollection form) {
        //...
    }

    [HttpPut]
    public HttpResponseMessage UpdateOrder(FormDataCollection form) {
        //...
    }

    [HttpDelete]
    public void RemoveOrder(FormDataCollection form) {
        //...
    }
 }

嗯,没有必要将所有数据网格数据发送到服务器端。只管理更新的数据。

this article中有关于数据绑定的其他信息。

同时查看this demo

答案 2 :(得分:0)

对于我的问题,我找到了自己的方式。 这是解决方案。 https://www.devexpress.com/Support/Center/Question/Details/T489645 感谢devextreme支持。