2012-12-10 131 views
1

我有一个视图模型,它有一个对象列表。WebGrid复选框MVC剃刀

将列表绑定到WebGrid很好,并正确显示所有数据。

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

更新在MVC和Razor中证明了正确的“A ...的痛苦”。

如何将这些更改发送回控制器? 有人可以请指教吗? 任何样品?

更新:

我已经能够给每一个复选框中的姓名和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,让我走下这条赛道。

+0

为什么你想要所有的复选框返回值?什么值?还有什么阻止你添加一个文本框?你这样做,就像你添加复选框。 –

+0

请给你的问题一个_meaningful_ title。不要列出_tags_。 – abatishchev

回答

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:” 应用/ JSON的; 。字符集= UTF-8" ,因为没有任何的json内容

fmSearch是Html.BeginForm()的id,你可以写他们为:

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

最后,你的行动上面添加[HttpPost]和替换的ActionResult与JsonResult