gpt4 book ai didi

asp.net-mvc - MVC WebApi 在 C# 中获取传递对象

转载 作者:行者123 更新时间:2023-12-01 09:02:55 26 4
gpt4 key购买 nike

我需要获取我的 mvc webapi 的 from 和 to date 来检索这些日期之间的项目。这是我尝试过但没有奏效的最喜欢的事情(我已经尝试了几件事)。

我有一个在项目之间共享的对象:

public class SchedulerDateSpan
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}

这是我的 get Controller 类:

public IEnumerable<Appointment> GetAppointments(SchedulerDateSpan dates)
{
IEnumerable<Appointment> appointments =
db.Appointments.Where(
a =>
(a.StartDate <= dates.StartDate && a.EndDate >= dates.StartDate) || (a.StartDate <= dates.EndDate && a.EndDate >= dates.EndDate) ||
(a.StartDate > dates.StartDate && a.EndDate < dates.EndDate)).AsEnumerable();
return appointments;
}

这是我来自客户的电话,其中日期类型为 SchedulerDateSpan:

var client = new HttpClient { BaseAddress = new Uri(Properties.Settings.Default.SchedulerWebApi) };

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage resp = client.GetAsync(String.Format("api/Appointments/{0}",dates)).Result;

if (resp.IsSuccessStatusCode)
{
var appointments = resp.Content.ReadAsAsync<IEnumerable<Appointment>>().Result;
......
}

我还尝试将其更改为似乎可以使用的 put,但后来我无法使用 Content.ReadAsAsync

解析结果

欢迎提出任何建议

最佳答案

默认情况下,复杂类型(例如您的 SchedulerDateSpan)预计会在请求正文中传递。如果您希望从 URI 传递值,则必须将操作参数标记为 [FromUri]:

public IEnumerable<Appointment> GetAppointments([FromUri]SchedulerDateSpan dates)
{...}

然后您可以从 Uri 中的查询字符串中传递“日期”,如下所示:

HttpResponseMessage resp = client.GetAsync(
String.Format("api/Appointments?dates.StartDate={0}&dates.EndDate={1}",
dates.StartDate.ToString(),
dates.EndDate.ToString())).Result;

关于asp.net-mvc - MVC WebApi 在 C# 中获取传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com