【问题标题】:WebGrid checkbox MVC RazorWebGrid 复选框 MVC Razor
【发布时间】:2012-11-28 01:02:53
【问题描述】:

我有一个包含对象列表的视图模型。

将列表绑定到 WebGrid 可以正常显示所有数据。

对象有一个布尔值,我希望用户通过选择与 WebGrid 中的每条记录一起显示的复选框来更改。当用户选中/取消选中各种复选框然后单击更新按钮时,我希望能够保存对对象的更改。

使用 MVC 和 Razor,更新证明是正确的“痛点...”。

如何将这些更改发送回控制器? 有人可以建议吗? 有样品吗?

更新:

在为每个复选框指定名称和 ID 后,我已经能够将整个表单传回控制器。该值设置为 item.Id,并且仅在实际选中复选框时才在表单的属性中找到。

所以在控制器中,我这样做:

public ActionResult Assign(FormCollection form)
{
    var ch = form.GetValues("itemChk");
    foreach (var id in ch)
    {
      //...Get object using id
      //...Call your method
    }
    return View();
}

ch 是 item.Ids 的字符串数组,只有那些被选中的复选框。 通过将 item.Id 作为选中复选框的值返回,我可以在项目本身上分配/设置该值并保存/更新它。

接下来尝试获取所有返回值的复选框。也可以在 WebGrid 中每一行的文本框中尝试类似的方法来处理返回值。

the link 让我走上了这条路。

【问题讨论】:

  • 为什么要返回所有复选框的值?什么价值观?另外,是什么阻止您添加文本框?执行此操作的方式与添加复选框的方式相同。
  • 请给你的问题一个有意义的标题。不要列出标签

标签: c# asp.net-mvc razor webgrid


【解决方案1】:

您可以使用 Json ajax 调用将 FormCollection 传递给控制器​​

$('#btnClick').click(function (event) {
    var form = $("#fmSearch").serializeArray();
    $.ajax({
        url: '/Home/Assign',
        dataType: "json",
        type: "post",
        data: form,
        cache: false,
        success: function (data) {
        },
        error: OnError
    });
});

请注意:不要添加“contentType:”application/json; charset=utf-8" 因为没有任何 json 内容。

fmSearch是Html.BeginForm()的id,可以写成:

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "fmSearch" }))
{
    @Html.ValidationSummary(true)
}

最后,在您的操作上方添加 [HttpPost] 并将 ActionResult 替换为 JsonResult。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 2013-09-18
    • 2023-03-14
    • 2014-07-28
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2012-04-30
    相关资源
    最近更新 更多