我似乎无法弄清楚如何让我的 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 个选择:
使用 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/