【问题标题】:Kendo UI DateTimePicker does not bind properly into the controllerKendo UI DateTimePicker 没有正确绑定到控制器
【发布时间】: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() 或我在剑道小部件中选择的日期

标签: javascript jquery ajax asp.net-mvc kendo-ui


【解决方案1】:

您需要指定您提供的数据类型:

contentType: 'application/json'

可能还有数据类型depending on your response type。而according to this post,您可能需要对您的回复进行字符串化处理。我认为我不需要这样做,但我不经常将 AJAX 操作用于复杂的数据类型。

【讨论】:

  • 仍然不能处理日期,我认为它必须是剑道的一些问题。我想发送到控制器的所有其他数据都已正确发送,但日期并非如此。
  • 哦,是的,我没有意识到,要让日期不受控制,val() 是否有效,因为您也可以使用 API:$("#datePurchaseInvoice").data("kendoDateTimePicker").value()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
相关资源
最近更新 更多