[英]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.