jquery - 如何在 Post 方法中获取模型内动态生成的复选框的值
问题描述
我需要在表单提交时传回一组选中的复选框。问题是,复选框不是模型的一部分,它们是在用户执行某些操作后由 jquery 生成的。复选框在页面上正确出现。如何在发布事件时在我的模型中获取已检查的属性。
@model Models.MainModule
@using (Html.BeginForm("Detail", "SomeControllerName", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.HiddenFor(m => Model.SubCheckList)
<div id="CheckList"></div>
}
用于复选框的 Jquery:
$(document).ready(function () {
$("#ModID").change(function () {
var ModId = $('#ModID').val();
$.ajax({
type: "GET",
url: "/SomeController/SomeAction",
data: { Mid: ModID },
datatype: "json",
traditional: true,
success: function (data) {
$('#CheckList').empty();
$.each(data, function (key, value) {
var li = $('<li><input type="checkbox" name="' + key + '" id="' + value.subID + '"/>' +
'<label for="' + key + '"></label></li>');
li.find('label').text(value.subName);
$('#CheckList').append(li);
});
}
});
});
});
模型类
namespace Models
{
public class MainModule
{
public int MainID { get; set; }
public string MainName { get; set; }
public List<MyModule> SubCheckList { get; set; }
}
public MainModule()
{
this.SubCheckList = new List<MyModule>();
}
public class MyModule
{
public int id { get; set; }
public string name { get; set; }
}
}
控制器代码:
[HttpPost]
public ActionResult Detail(MyModule myModuleObj)
{
GetViewBagData();
return View();
}
解决方案
您可以通过 AJAX 表单提交来完成。
首先根据您的要求为您的表单添加一个名称。例如,“formMainModule”
首先为每个复选框添加一个类“chkBxClass”。这是为了获取稍后检查的复选框值。
在jQuery中
var checkedIds = $('.chkBxClass:checkbox:checked').map(function () { return this.value; }).get().join(',');
$.ajax({
type: 'POST',
data: $('#formMainModule').serialize() + '&checkedIds=' + checkedIds,
url: '/SomeControllerName/Detail',
success: function (result) {
}
});
在控制器中,
[HttpPost]
public ActionResult Detail(MyModule myModuleObj, string[] checkedIds)
{
// Here you can add checked ids to your module
}
推荐阅读
- flutter - 向 MaterialPageRoute 添加过渡
- javascript - 嘿,我怎样才能验证用户名和密码?似乎javascript没有得到值
- mysql - MySQL 事件未按计划运行
- r - R - 访问函数内的变量“名称”
- python - 我如何获取表上的值并将其保存到变量中
- go - 如何将 []uint8 转换为字符串
- clang - clang __asm__ 在 case 语句中带有标签,得到错误:指令的操作数无效
- hibernate - Hibernate:persistence.xml 中的错误 - 元素“persistence-unit”不能包含文本内容。内容类型被定义为仅元素
- sql - ORA-00904: : Oracle Life 数据库中的标识符无效
- optimization - 是否有可能在 Rust 中获得整数的本机 CPU 大小?