我遇到了aps.net mvc项目的问题。我有一个视图,其中设置了开始表单内的复选框列表,然后提交相应的字段显示为报告。所以我必须在我的视图中添加一个按钮,用户可以在其中设置他想要查看的字段,这样他就可以将所有复选框值保存为带有名称的预设。
我有很多嵌套模型的模型,如下所示:
public class EmployeeOverallReport
{
public List<PersonalData> ListOfPersonalData { get; set; }
public EmployeeOverallReportBool ColumnsNeeded { get; set; }
public EmployeeOverallReportFilters ModelFilters { get; set; }
}
我实际上需要ColumnsNeeded模型,它有很多bool属性用于存储每个复选框值(true / false)。
因此,点击后我必须获取当前状态的复选框并发布包含这些模型值的帖子。
我一直在尝试序列化我的表单:
var data = $('#myForm').serialize();
$.post(url, { presetName: Name, entry: data}, function (data) {
$("#saveResult").html("Saglabats");
});
我收到了JSON字符串,但它无效,我无法将其反序列化。
以下是我现在要做的事情:
$("#savePresetButton").on('click', function () {
var url = "/Reports/SavePreset";
var data = @Html.Raw(Json.Encode(Model));
$.post(url, { presetName: Name, entry: data}, function (data) {
$("#saveResult").html("Saglabats");
});
});
此代码使用我的viewModel及其属性,其中所有ColumnsNeeded属性都设置为false,因为默认情况下,视图中的所有用户端更改都未设置为模型,因此我的表单未提交,价值没有改变。
如何在用户端获取所有复选框的当前状态? 不这样做:
var dataset = {
CategoryBool: $("#ColumnsNeeded_CategoryBool").val(),
NameBool: $("#ColumnsNeeded_NameBool").val(),
KnowledgeLevelBool: $("#ColumnsNeeded_KnowledgeLevelBool").val(),
SkillAdditionalInfoBool: $("#ColumnsNeeded_SkillAdditionalInfoBool").val(),
...
}
因为那里有超过90个属性..
我很抱歉这篇文章,但由于模型中的属性数量,发布一些代码是不可能的。