【问题标题】:how to pass model with jquery ajax post with datetime如何使用带有日期时间的jquery ajax帖子传递模型
【发布时间】:2013-07-13 10:45:48
【问题描述】:

在我的按钮单击上,我将模型传递给带有日期时间对象的控制器,在我的本地数据库中它工作正常,但是当我上传到服务器时,日期时间值采用 null。如何解决此问题。 这是我的按钮点击代码

$('#btnTaxiCall').on('click', function () {
stopCallTime();
var TaxiCallTime = new Date();
//alert(TaxiCallTime.toUTCString());
// $('#TaxiCallTime').val(TaxiCallTime.toISOString());
$('#TaxiCallTime').val($.date(TaxiCallTime));
            var model = $("#formTaxiLog").serializeArray();
            $('#btnTaxiArrival').removeAttr('disabled');
            $.ajax({
                url: '/TaxiLog/Add', type: 'Post', dataType: 'json',
                data: $.param(model),
                success: function (data) { $('#btnTaxiCall').css({ backgroundColor: 'green' }); isSaved = true; Id = data.id; $('#CallTime button').attr('disabled', 'disabled'); $('#ErrMsg').hide(); $('#CallTime div').removeClass('customValidation'); $("#Id").val(Id); }
            });

$.date = function (dateObject) {
       // alert(dateObject);
        var d = new Date(dateObject);
        var day = d.getDate();
        var month = d.getMonth();
        var year = d.getFullYear();
        var hours = d.getHours();
        var minutes = d.getMinutes();
        var seconds = d.getSeconds()
        var date = day + "/" + month + "/" + year + " " + hours + ((minutes < 10) ? ":0" : ":") + minutes + ((seconds < 10) ? ":0" : ":") + seconds;

        return date;
    }

public int Post(TaxiLogVM vm)
{
using (var dc = new SGSDBContext())
{
            string sql = "SELECT COUNT(Id) FROM [dbo].[Venue] WHERE [Id]={0};";
            if (dc.Database.SqlQuery<int>(sql, vm.VenueId).FirstOrDefault() == 0)
            {
                return 0;
            }
            else
            {
                vm.CreatedDate = vm.ModifiedDate = DateTime.Now;
                //vm.TaxiArrivalTime = null;
                sql = "INSERT INTO [dbo].[TaxiLog]([VenueId],[UserId],[Title],[Name],[Destination],[TaxiFirmId],[TaxiCallTime],[TaxiArrivalTime],[CreatedDate],[ModifiedDate]) "
                    + "VALUES({0},{1},{2},{3},{4},{5},{6},{7},{8},{9}); "
                    + "SELECT SCOPE_IDENTITY();";
                vm.Id = (int)dc.Database.SqlQuery<decimal>(sql, vm.VenueId, vm.UserId, vm.Title, vm.Name, vm.Destination, vm.TaxiFirmId, vm.TaxiCallTime.Value.ToString(" hh:mm:ss tt"), SqlDateTime.Null, vm.CreatedDate, vm.ModifiedDate).FirstOrDefault();
                dc.SaveChanges();

                return vm.Id;
            }
        }
    }

【问题讨论】:

  • 我的代码有什么问题。任何人帮助我
  • 请显示您的控制器操作和模型代码。

标签: jquery sql-server asp.net-mvc


【解决方案1】:

不应将datetime 传递给控制器​​,而应将其作为string 传递,然后在控制器中解析为datetime。

创建一个字符串属性,将您的日期时间转换为字符串。

public string MyDateTimeString
{
  get{ return datetime.toString();}
  set{ datetime = Convert.toDateTime(value);}
}

【讨论】:

  • 在视图模型中我为该字段采用日期时间类型
  • 我的视图模型只能使用日期时间
  • 如果我的另一个日期时间列是空的,我的日期时间还有另一个问题,它会抛出错误。所以我使用日期时间?输入
猜你喜欢
  • 2017-01-10
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 2011-10-02
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多