簡體   English   中英

WebGrid復選框MVC剃刀

[英]WebGrid checkbox MVC Razor

我有一個視圖模型,其中包含對象列表。

將列表綁定到WebGrid很好,並且可以正確顯示所有數據。

這些對象具有布爾值,我希望用戶通過選擇與WebGrid中的每個記錄一起顯示的復選框來更改它們。 當用戶選中/取消選中各個復選框,然后單擊更新按鈕時,我希望能夠將更改保存在對象上。

通過MVC和Razor進行的更新證明是正確的“痛苦中的A ...”。

如何將這些更改發送回控制器? 有人可以請教嗎? 有樣品嗎?

更新:

給每個復選框一個名稱和ID之后,我已經能夠將整個表單傳遞回Controller。 該值設置為item.Id,並且僅在實際選中復選框的情況下才能在表單的屬性中找到。

因此,在Controller中,我這樣做:

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的字符串數組。僅選中的那些復選框的ID。 通過返回item.Id作為選中復選框的值,我可以在項目本身上分配/設置該值並保存/更新。

接下來嘗試獲取所有帶值返回的復選框。 也可以在文本框中找到WebGrid中的每一行,並嘗試類似的方法來處理返回值。

這是使我走上正軌的鏈接

您可以使用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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM