【发布时间】:2016-10-21 08:27:58
【问题描述】:
我对 aps.net mvc 项目有疑问。我有一个视图,其中设置了开始表单内的复选框列表,然后在提交时将适当的字段显示为报告。所以我必须在我的视图中添加一个按钮,用户可以在其中设置他想查看的字段,以便他可以将所有复选框值保存为带有其名称的预设。
我有很多嵌套模型的模型,看起来像这样:
public class EmployeeOverallReport
{
public List<PersonalData> ListOfPersonalData { get; set; }
public EmployeeOverallReportBool ColumnsNeeded { get; set; }
public EmployeeOverallReportFilters ModelFilters { get; set; }
}
我实际上需要 ColumnsNeeded 模型,它有很多用于存储每个复选框值(真/假)的布尔属性。
所以在点击时,我必须获取复选框的当前状态并使用这些模型值发布帖子。
我一直在尝试序列化我的表单:
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 多处房产..
我很抱歉这篇文章,但由于模型内的属性数量,无法发布一些代码。
【问题讨论】:
-
您发布到的控制器方法是什么。如果您使用
.serialize()序列化模型并且想要包含其他属性,您可以使用.param()添加额外的值 - 请参阅this answer 以获取示例
标签: javascript c# jquery asp.net-mvc