0

首先,我有 3 个输入文本框(日、月、年)。我让 Json 从我的控制器返回,我用 jquery 做了一个键和值绑定函数。问题是我不知道如何将日期时间值拆分为日、月、年并绑定到我的输入,因为日期时间值看起来像

EntryDate: "/Date(940786200000)/"

我的控制器

        [HttpGet]
        public ActionResult getBookById(int? id)
        {
            TB_EnglishBooks tbook = db.TB_EnglishBooks.Where(x => x.ItemID == id).FirstOrDefault();
            return Json(tbook, JsonRequestBehavior.AllowGet);
        }

我的 HTML 视图

<input class="form-control" id="Day" type="text" placeholder="Day" style="width: 94px;">
<input class="form-control" id="Month" type="text" placeholder="Month" style="width: 94px;">
<input class="form-control" id="Year" type="text" placeholder="Year" style="width: 94px;">

我的绑定函数

function bindcontrol(data) {
            $.each(data, function (key, value) {
                $("#mymodal").modal('show');
                if (value == true || value == false) {
                    $("#addform").find("input[type='checkbox'][name='" + key + "']").prop("checked", value);
                }
                else {
                    $("#addform").find("input[name='" + key + "']").val(value);
                    $("#addform").find("textarea[name='" + key + "']").val(value);
                    $("#addform").find("select[name='" + key + "']").val(value);
                }
            })
        }
4

1 回答 1

1

请检查此链接

ASP.NET MVC JsonResult 日期格式

或者如果你想执行服务器端

https://www.developer.com/net/dealing-with-json-dates-in-asp.net-mvc.html

function ToJavaScriptDate(value) {
  var pattern = /Date\(([^)]+)\)/;
  var results = pattern.exec(value);
  var dt = new Date(parseFloat(results[1]));
  return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}

function bindcontrol(data) 
{
    $.each(data, function (key, value) 
    {
        $("#mymodal").modal('show');
        if (value == true || value == false) {
            $("#addform").find("input[type='checkbox'][name='" + key + "']").prop("checked", value);
        }
        else 
        {
           if(key =="date") // here you date filed
           {
             $("#addform").find("input[name='" + key + "']").val(ToJavaScriptDate(value));
           }
           else
           {
               $("#addform").find("input[name='" + key + "']").val(value);
           }

            $("#addform").find("textarea[name='" + key + "']").val(value);
            $("#addform").find("select[name='" + key + "']").val(value);
        }
    });
}

如果要执行上述操作,服务器端需要添加一些类JsonTextWriter

1)创建Json结果类

public class JsonNetResult : JsonResult
{
  public object Data { get; set; }

  public JsonNetResult()
  {
  }
  ...
}

2)如果您只执行控制器级别,则在控制器级别覆盖方法,您可以创建一个属性并在全局文件中注册以及所有控制器级别。

public override void ExecuteResult(ControllerContext context)
{
  HttpResponseBase response = context.HttpContext.Response;
  response.ContentType = "application/json";
  if (ContentEncoding != null)
    response.ContentEncoding = ContentEncoding;
  if (Data != null)
  {
   JsonTextWriter writer = new JsonTextWriter(response.Output) { Formatting = Formatting.Indented };
   JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings());
   serializer.Serialize(writer, Data);
   writer.Flush();
  }
}

3) 控制器方法

public JsonNetResult GetOrder(DateTime id)
{
   TB_EnglishBooks tbook = db.TB_EnglishBooks.Where(x => x.ItemID == id).FirstOrDefault();
            return Json(tbook, JsonRequestBehavior.AllowGet);
  return new JsonNetResult() { Data=tbook};
}
于 2020-01-20T10:05:41.503 回答