javascript - 无法将 Javascript 对象绑定(bind)到操作 Controller

标签 javascript jquery ajax model-view-controller

我似乎无法弄清楚如何让我的 Javascript 对象绑定(bind)到我的模型,就属性而言(据我所知)就像它一样。

首先创建 Javascript 对象:

var transDetail = new Object();
transDetail.TransactionDetailID = transdetailId;
transDetail.TransactionID = "";
transDetail.Year = new Date().getFullYear();
transDetail.Volume = "";
transDetail.UnitPrice = "";
transDetail.TransferableVolume = "";
transDetail.Credits = "";
transDetail.Shares = "";
transDetail.DollarsPerShare = "";

然后将其传递给此 JavaScript 函数

function loadTransDetailEditCreate(d, cb, title, transactionDetail) {
    $.ajax(
        {
            url: '/TransactionDetail/LoadEditCreate',
            data: JSON.stringify(transactionDetail),
            dataType: 'json',
            success: function (result) {
                d.html(result);
                CreateEditTransDetail(d, cb, title, transactionDetail);
                d.dialog('open');
            }
        }
    );
}

我已验证传输前的年份属性已填充为 2015。

现在是模型定义

public partial class TransactionDetail
{
    public int TransactionDetailID { get; set; }
    public int TransactionID { get; set; }
    public int Year { get; set; }
    public Nullable<int> Volume { get; set; }
    public Nullable<int> UnitPrice { get; set; }
    public Nullable<int> TransferableVolume { get; set; }
    public Nullable<int> Credits { get; set; }
    public Nullable<int> Shares { get; set; }
    public Nullable<int> DollarsPerShare { get; set; }

}

以及操作定义

public PartialViewResult LoadEditCreate(TransactionDetail transactionDetail)

当我将第一件事分解到操作中时,所有不可为空的整数都设置为 0,并且所有可为空的整数都设置为 null。

最佳答案

问题在于发送数据:JSON...

您有 2 个选择:

  1. 使用 POST:(已尝试且有效)

    function loadTransDetailEditCreate(d, cb, title, transactionDetail) {
    $.ajax(
        {
            type: 'post',                                      //added
            contentType: "application/json; charset=utf-8",    //added
            url: '/TransactionDetail/LoadEditCreate',
            data: JSON.stringify(transactionDetail),
            dataType: 'json',
            success: function (result) {
                d.html(result);
                CreateEditTransDetail(d, cb, title, transactionDetail);
                d.dialog('open');
            }
        }
      );
    }
    

并用 [HttpPost] 属性装饰你的 Controller

[HttpPost]
public PartialViewResult LoadEditCreate(TransactionDetail transactionDetail)
  • 如果您想使用 get - look here (没试过,应该可以)
  • 关于javascript - 无法将 Javascript 对象绑定(bind)到操作 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31950457/

    相关文章:

    javascript - 访问js集合中的第一个元素

    javascript - 如何根据服务器响应在 phonegap 中显示图像

    javascript - 如何使用 TCPdf 和 PHP 创建只能由 adobe reader 打开的 pdf 文件

    jquery - 如果没有可见的 sibling ,则隐藏

    javascript - Facebook 群聊 - 无需分页即可获取完整聊天内容

    php - 将 HTML5 Canvas 数据保存到服务器

    javascript - Javascript 构造函数中的私有(private)函数不可公开访问

    javascript/jquery 增量检查

    javascript - 如何从 addEventListener 中删除重复项

    Javascript facebook 评论刷新太多