【问题标题】:Post a JSON object to an MVC controller and retrieve an IEnumerable type [closed]将 JSON 对象发布到 MVC 控制器并检索 IEnumerable 类型 [关闭]
【发布时间】:2016-09-29 22:52:36
【问题描述】:

我想从我的 AJAX 中检索 JSON,格式为

{ID_USER : ID_INSTRUCTION}

我的 JSON 结果:

[{"658":"81"},{"658":"82"},{"658":"90"},{"658":"101"}]

这是我用于发布 AJAX 的 jQuery 代码:

$("#boutton-add").on('click',function (e) {
    e.preventDefault();
    var newFormData = [];
    var usr = $('.usr_id').attr('id');
    jQuery('.tab_inst tr[name="inst"]').each(function (i) {
        var tb = jQuery(this);
        var obj = {};
        tb.find('button[name="delete"]').each(function () {
                obj[usr] = this.id;
        });
        if (obj[usr] != null)
            newFormData.push(obj);
    });
    var jsonresult = JSON.stringify(newFormData); // object return instruction of user after removing and adding informations 

    //alert(jsonresult);

    //----------------------ajax to posting json to actionresult

    $.ajax({
        type: 'POST',
        url: '/Usr_Inst/set_user_inst/',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: jsonresult,
        traditional: true,
        success: function (data) {
            alert(jsonresult);
        }
    });
});

现在一切正常。

现在我想从包含两列 ID_USER 和 ID_INSTRUCTION 的 USER_INSTRUCTION 表中添加或删除程序,为此我需要一个具有参数 IEnumerable <USER_INSTRUCTION> 的 ActionResult 方法。

public ActionResult set_user_inst(IEnumerable<USER_INSTRUCTION> jsonresult)
{
    // adding or removing programs.
}

我的模型类是这样的:

[Table("DPH.USER_INSTRUCTION")]

public partial class USER_INSTRUCTION
{
    [Key]
    public decimal ID_USER { get; set; }
    public decimal ID_INSTRUCTION { get; set; }

    public virtual INSTRUCTION INSTRUCTION { get; set; }
    public virtual USERS USER { get; set; } }

项目运行时我从 MVC 控制器参数中得到的值是ID_USER = 0 an ID INSTRUCTION = 0

【问题讨论】:

  • 您应该将相关代码发布到问题中!不是某些图片的链接!。
  • 这里不要放截图,放代码
  • 值得注意的是requests for urgency do not go down well here - 请阅读:-)
  • 对于Some HELP Please !!!!,即使在我写了关于请求紧急的说明之后,我还是投了反对票。我们对这里的要求反应不佳。
  • 好的,谢谢你的评论!

标签: jquery asp.net json ajax asp.net-mvc


【解决方案1】:

您将以下键值对发布到服务器,但您尝试将其绑定到 IEnumerable&lt;string&gt;

[{ "658": "81" }, { "658": "82" }, { "658": "90" }]

根据方法参数IEnumerable&lt;string&gt;,你想像["81" ,"82" , "90" ]这样在客户端将数据保存到一个数组中,然后发布到服务器。

- 或者-

您发布以下 JSON,并将其绑定到服务器上的强类型模型。

Json

[{ "Number": "81" }, { "Number": "82" }, { "Number": "90" }]

型号

public class UserModel
{
    public string Number { get; set; }
}

动作方法

[HttpPost]
public ActionResult SetUserInst(IEnumerable<UserModel> collection)
{
    // C# Method name should start with Capital.
    return View();
}

【讨论】:

  • 我已经回答了你的问题 - 发布的数据和操作方法的参数必须匹配。你在哪里卡住了?
  • 我认为我编辑我的帖子是一样的 ajax 中的数据名称是“jsonresult” 与方法参数相同?!!
  • 在发布一大堆属性之前,您希望从我的答案中的单个属性开始,例如 Number。然后继续往上走。
  • 我想为每个 key-value 获取一个 USER_INSTRUCTION 对象,该对象具有 Id_user 和 id_ 指令并且它们的类型是十进制。所以我想从我的 json 结果中得到一个 IEnumerable 。所以对于我在 JSON 中的每个键值都是一个 USER_INSTRUCTION 对象
猜你喜欢
  • 2017-02-22
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 2014-03-01
  • 2021-11-07
相关资源
最近更新 更多