【问题标题】:Can't get Javascript Object to bind to a action Controller无法让 Javascript 对象绑定到动作控制器
【发布时间】:2015-11-04 04:35:39
【问题描述】:

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

首先创建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,所有可空的整数都设置为空。

【问题讨论】:

    标签: javascript jquery ajax model-view-controller


    【解决方案1】:

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

    你有两个选择:

    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] 属性装饰你的控制器

    [HttpPost]
    public PartialViewResult LoadEditCreate(TransactionDetail transactionDetail)
    
    1. 如果你想使用 get - look here(没试过,应该可以)

    【讨论】:

    • 太棒了,谢谢。我用了第一个,效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多