Kendo UI DateTimePicker 没有正确绑定到控制器
Posted
技术标签:
【中文标题】Kendo UI DateTimePicker 没有正确绑定到控制器【英文标题】:Kendo UI DateTimePicker does not bind properly into the controller 【发布时间】:2018-04-07 01:23:52 【问题描述】:我有一个复杂的对象,我需要在提交表单时将其传递给控制器。这个复杂的对象有一个对象和一个对象列表。这是我的 Web API 控制器,它使用 ajax 通过 post 接收复杂对象:
[HttpPost]
public IHttpActionResult CreatePurchaseInvoice(NewPurchaseInvoice newPurchaseInvoice)
try
var purchaseInvoice = new PurchaseInvoice
Id = newPurchaseInvoice.PurchaseInvoice.Id,
DatePurchaseInvoice = newPurchaseInvoice.PurchaseInvoice.DatePurchaseInvoice
;
// Here i do other stuff with the list of objects
_context.SaveChanges();
catch(Exception ex)
return BadRequest();
return Ok();
这是我的 html 表单:
<form id="purchaseInvoiceForm">
<div class="row">
<div class="col-lg-6">
<label>Order:</label>
<select id="numberOrder" class="form-control" required name="numberOrder">
<option value="">Select an order number...</option>
</select>
</div>
<div class="col-lg-6">
<div class="form-group">
<label>Date of Purchase Invoice:</label><br />
<input id="datePurchaseInvoice" style="width: 70%" />
</div>
</div>
</div>
//Here i have an html table and every row i push into an array of the complex object
</form>
这是我通过 ajax 发送复杂对象的 jQuery 代码:
$(document).ready(function()
//this is the declaration of my complex object
var newPurchaseInvoice =
PurchaseInvoice: ,
PurchaseInvoiceDetails: []
$("#purchaseInvoiceForm").submit(function (e)
e.preventDefault();
newPurchaseInvoice.PurchaseInvoice=
Id: $("#numberOrder").val(),
DatePurchaseInvoice : $("#datePurchaseInvoice").val()
$.ajax(
url: "/api/purchaseInvoices",
method: "post",
data: newPurchaseInvoice
);
);
);
我遇到的问题是 KendoDateTimePicker 的日期没有正确发送到控制器。 我得到了这个日期,而不是我用 kendoDateTimePicker 选择的那个。这是我的 PurchaseInvoice 模型的西班牙语 DatePurchaseInvoice 属性:
这是我的 jQuery 的 KendoDateTimePicker:
$("#datePurchaseInvoice").kendoDateTimePicker(
value: new Date(),
dateInput: true
);
这是我的 NewPurchaseInvoice 模型:
public class public class NewPurchaseInvoice
public PurchaseInvoice PurchaseInvoice get; set;
public List<PurchaseInvoiceDetail> PurchaseInvoiceDetails get; set;
这是我的 PurchaseInvoice 模型:
public class PurchaseInvoice
public int Id get; set;
public DateTime DatePurchaseInvoice get; set;
【问题讨论】:
Date
不是要发布的内容.. DatePurchaseInvoice
是.. NewPurchaseInvoice
上的实际属性名称是什么
您应该发布您的 NewPurchaseInvoice 型号和 PurchaseInvoice 型号代码
我现在编辑了我的帖子。感谢您的回复
您发送的实际价值是多少,服务器的文化是什么?
bundle 类中定义的文化是“~/Scripts/kendo/cultures/kendo.culture.es-ES.min.js”,我要发送的值是默认值:new Date() 或我在剑道小部件中选择的日期
【参考方案1】:
您需要指定您提供的数据类型:
contentType: 'application/json'
可能还有数据类型depending on your response type。而according to this post,您可能需要对您的回复进行字符串化处理。我认为我不需要这样做,但我不经常将 AJAX 操作用于复杂的数据类型。
【讨论】:
仍然不能处理日期,我认为它必须是剑道的一些问题。我想发送到控制器的所有其他数据都已正确发送,但日期并非如此。 哦,是的,我没有意识到,要让日期不受控制,val() 是否有效,因为您也可以使用 API:$("#datePurchaseInvoice").data("kendoDateTimePicker").value()
以上是关于Kendo UI DateTimePicker 没有正确绑定到控制器的主要内容,如果未能解决你的问题,请参考以下文章
从本地存储读取后,Kendo DateTimePicker没有时钟
设置发送到控制器的 Kendo DateTimePicker 日期格式
element UI 中DateTimePicker 回传时间选择