我对 aps.net mvc 项目有疑问。我有一个 View ,其中设置了开始表单内的复选框列表,然后在提交时将相应的字段显示为报告。因此,我必须在我的 View 中添加一个按钮,用户可以在其中设置他想要查看的字段,以便他可以将所有复选框值及其名称保存为预设。
我的模型有很多嵌套模型,它看起来像这样:
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,因为默认情况下, View 中的所有用户端更改尚未设置为模型,因此我的表单尚未提交,并且值没有改变。
如何获取用户端所有复选框的当前状态? 不这样做:
var dataset = {
CategoryBool: $("#ColumnsNeeded_CategoryBool").val(),
NameBool: $("#ColumnsNeeded_NameBool").val(),
KnowledgeLevelBool: $("#ColumnsNeeded_KnowledgeLevelBool").val(),
SkillAdditionalInfoBool: $("#ColumnsNeeded_SkillAdditionalInfoBool").val(),
...
}
因为我在那里有超过 90 处特性..
我对这篇文章感到抱歉,但由于模型内的属性数量,发布一些代码是不可能的。
最佳答案
你可以serialize整个表单和ajax提交表单本身?
关于javascript - ViewModel 当前状态到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171812/