2012-02-08 27 views
5

Tôi đang làm việc trong một dự án mà tôi tạo ra một mạng lưới sử dụng dữ liệu từ cơ sở dữ liệu, trong bộ điều khiển của tôi, tôi có mã nàyReturn Json từ MVC điều khiển nhưng định dạng ngày không thích hợp trong javascript

List<IEmployeeEntity> list = new Employee(connectionString).GetEmployeeRecord(); 

Nó trả về cho tôi danh sách các nhân viên với một số ngày và hơn nữa tôi chuyển nó sang Json bằng cách sử dụng trở lại Json (danh sách); Nhưng định dạng ngày tôi nhận được trong kịch bản lưới java của tôi như/ngày (1325075075113)/ mã javascript của tôi là như

$.ajax({ 
     url: ../getRecord, 
     type: 'POST', 
     data: {}, 
     async: false, 
     success: function (result) { 
      if (result !== "") { 
         Create Grid  
         } 
        } 
       }); 
+0

có hữu ích không? –

+0

Cuối cùng tôi giải quyết vấn đề của tôi bằng cách này, Danh sách list = new Employee (connectionString) .GetEmployeeRecord(); trở Json (list.Select (n => mới { n.key1, AddedOn = n.AddedOn.Value.ToShortDateString() : String.Empty, n.key2, n.key3 })) ; –

+0

có thể trùng lặp của [ASP.NET MVC JsonResult Date Format] (http://stackoverflow.com/questions/726334/asp-net-mvc-jsonresult-date-format) –

Trả lời

0

vấn đề không javascript của nó tôi nghĩ rằng bạn cần phải format bạn hẹn hò trong bạn mã như bạn yêu cầu tức là chỉ trong mã C#.

somthing như dưới đây có thể giúp bạn ..

List<IEmployeeEntity> list = new Employee(connectionString).GetEmployeeRecord(); 
list.All(x => { x.mydate = x.mydate.ToString("dd/MM/yyyy"); return true; }) 

hay

thử giải pháp này khi tài sản của bạn là loại datetime bởi vì trong một đầu tiên nó sẽ cung cấp cho bạn một lỗi nếu loại tài sản là datetime

var q = from o in MyList 
     select new { mydate = x.mydate.ToString("dd/MM/yyyy"), 
        prop1 = o.prop1, 
        prop2 = o.prop2 
        }; 
+0

Có thuộc tính của tôi là loại datetime và nó cũng là null. Tôi đang đối mặt với vấn đề tương tự. Tôi đã thử DateTimeFormatInfo dtfi = new DateTimeFormatInfo(); dtfi.ShortDatePattern = "MM-dd-yyyy"; list.ForEach (f => f.AddedOn = Convert.ToDateTime (f.AddedOn, dtfi)); cũng như của bạn. –

0

Vâng, đó là vấn đề về phía máy chủ (thế hệ). loại thuộc tính ngày trong thực thể Nhân viên là gì. hành vi mặc định gọi phương thức ToString() của nó.

1

tôi đã tạo ra hai phương pháp khuyến nông cho kịch bản như vậy

/// <summary> 
/// Converts the value of the current System.DateTime object to its equivalent string representation using the specified format and culture-specific format information. 
/// </summary> 
/// <param name="date">DateTime instance</param> 
/// <param name="format">A standard or custom date and time format string.</param> 
/// <returns>A string representation of value of the current System.DateTime object as specified by format and provider.</returns> 
public static string ToFormatString(this DateTime date, string format) { 
    return date.ToString(format, new CultureInfo("en-US")); 
} 

/// <summary> 
/// Returns the number of milliseconds since Jan 1, 1970 (useful for converting C# dates to JS dates) 
/// </summary> 
/// <param name="dt">Date Time</param> 
/// <returns>Returns the number of milliseconds since Jan 1, 1970 (useful for converting C# dates to JS dates)</returns> 
public static double UnixTicks(this DateTime dt) { 
    DateTime d1 = new DateTime(1970, 1, 1); 
    DateTime d2 = dt.ToUniversalTime(); 
    TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks); 
    return ts.TotalMilliseconds; 
} 

Bạn có thể chọn bất kỳ của họ. Để chuyển đổi ngày thành chuỗi, bạn có thể chỉ cần thực hiện,

var dateString = myDate.ToFormatString("dd/MM/yyyy"); 

Bạn không phải lo lắng về văn hóa của máy.

Hy vọng điều này sẽ giúp bạn.

0

Tôi đã làm như thế này theo cách này:

đặt lưới vào chế độ xem theo hướng. từ khiển của bạn insted lợi nhuận json trở lại xem phần:

List<IEmployeeEntity> list = new Employee(connectionString).GetEmployeeRecord(); 
    return PartialView("GridPartial", list); 

Theo quan điểm của bạn: 1. sử dụng: @model IEnumerable. 2. thêm một div chứa phần:

<div id="partial"> 
    @Html.Partial("GridPartial", @model)   
    </div> 

và sau đó trong yout ajax:

$.ajax({ 
     url: ../getRecord, 
     type: 'POST', 
     data: {}, 
     async: false, 
     success: function (result) { 
       if (result.indexOf("<!DOCTYPE html>") == -1) { 
         $("#partial").empty(); 
         $("#partial").html(result); 
        } 
        } 
       }); 

trong chế độ xem một phần foreach trong mô hình (danh sách bạn) và điền vào lưới ...

0

Trình JavascriptSerializer được sử dụng bởi .Net tạo định dạng ngày cụ thể đó.

Bạn có thể chuyển nó sang một ngày JavaScript với những điều sau nếu bạn muốn để định dạng nó phía khách hàng:

var javascriptDate = new Date(parseInt(dateTimeInNetFormat.substr(6))) 
0

Tôi đã giải quyết vấn đề này cho bản thân mình theo cách sau đây:

Chỉ cần thêm vào IEmployeeEntity 1 tệp phụ sẽ định dạng DateTime này khi bạn cần và sau đó sử dụng nó khi gọi lại.

class IEmployeeEntity 
{ 
    public DateTime StartDate {set; get;} 

    public DateTime FormatedStartDate { get { return StartDate.ToString("MM/dd/yyyy") } } 

} 

Vì vậy, chỉ cần sử dụng FormatedStartDate trong Javascript của bạn và bạn sẽ nhận dạng đúng.

hoặc nếu bạn có một số Xem Class bạn chỉ cần làm

class IEmployeeEntity 
{ 
    private DateTime startDate; 
    public DateTime StartDate 
    { 
     set 
      { 
       startDate = value; 
      } 
     get { 
       return startDate.ToString("MM/dd/yyyy"); 
      } 
    } 
} 
0

tôi giải quyết vấn đề của tôi bằng cách làm theo

List<IEmployeeEntity> list = new Employee(connectionString).GetEmployeeRecord(); 
     return Json(
      list.Select(
        n => new { 
        n.key1, 
        AddedOn = n.AddedOn.Value.ToShortDateString() : String.Empty, 
        n.key2, n.key3 
     })); 
0

Nó trả về định dạng máy chủ ngày bên. Bạn cần xác định hàm của riêng mình để thay đổi định dạng ngày tháng.

function jsonDateFormat(jsonServerDate) { 

// Changed data format; 
return (new Date(parseInt(jsonServerDate.substr(6)))).format("mm-dd-yyyy/h:MM tt"); 

};

Các vấn đề liên quan