循环访问 JSON 对象并收集模型值

Iterate over JSON object and gather model values

本文关键字:模型 访问 JSON 对象 循环      更新时间:2023-09-26

我正在尝试发送一个 ajax get 请求,以接收数据库中一个表中的所有条目作为 JSON 对象。

检索到此内容后,我尝试遍历所有对象并将对象 ID 与本地 ID 进行比较。

如果有匹配项,我想将一些 html 文本框设置为它们的值,但我无法让它工作。

JavaScript:

$.ajax({
    url: "/Home/AllEvents",
    data: calEvent.id,
    dataType: "json",
    success: function(response) {
        for (var i = 0; i < response.length; i++) {
            var obj = response[i];
            if (obj.ID == calEvent.id)
            {
                document.getElementById('updateID').value = obj.ID;
                document.getElementById('updateType').value = obj.EventType;
                document.getElementById('updateDuration').value = obj.Hours;
                break;
            }
        }
    },

所有活动:

public JsonResult AllEvents(double? start, double? end)
{
    var eventList = new List<object>();
    foreach (Event ev in db.Events)
    {
        eventList.Add(ev);
    }
    return Json(eventList.ToArray(), JsonRequestBehavior.AllowGet);
}

事件模型:

public int ID { get; set; }
[Required]
[DataType(DataType.Date, ErrorMessage = "Please enter a valid date.")]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Date")]
public DateTime Date { get; set; }
[Required]
[EnumDataType(typeof(EventType), ErrorMessage = "Submitted value is not valid.")]
[Display(Name = "Type")]
public EventType? EventType { get; set; }
[Required]
public double Hours { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
public virtual Person Person { get; set; }

任何帮助将不胜感激。

在斯蒂芬的帮助下,我设法使它与以下内容一起工作:

查找事件:

public JsonResult FindEvent(int ID)
{
    Event ev = db.Events.Where(e => e.ID == ID).FirstOrDefault();
    object eventObject = new
    {
        hours = ev.Hours.ToString(),
        eventType = ev.EventType.ToString()
    };
    return Json(eventObject, JsonRequestBehavior.AllowGet);
}

JavaScript:

 $.ajax({
    url: '@Url.Action("FindEvent", "Event")',
            data: { ID: calEvent.id },
            dataType: "json",
            success: function (response) {
                console.log(response);
                document.getElementById('updateID').value = calEvent.id;
                document.getElementById('updateType').value = response.eventType;
                document.getElementById('updateDuration').value = response.hours;
            },
            error: function() {
                // Handle error
            }
        });