【问题标题】:ViewModel current state to JSONViewModel 当前状态到 JSON
【发布时间】: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


【解决方案1】:

你能serialize整个表单和ajax提交表单本身吗?

见:Pass entire form as data in jQuery Ajax function

【讨论】:

  • 使用 serialize() 返回不正确的 JSON 对象,之后我无法使用。代码闲置var data = $('#myForm').serialize(); $.post(url, { presetName: Name, entry: data}, function (data) { $("#saveResult").html("Saglabats"); });
  • 如果是我,我会更改 POST 控制器的模型以匹配此序列化数据或创建一个额外的控制器来处理此数据,而不是尝试将表单中的数据映射到不同的JSON 格式。 MVC 的全部意义在于使这种传递和更新模型变得容易
猜你喜欢
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 2020-06-14
相关资源
最近更新 更多