#c# #asp.net #asp.net-web-api
Вопрос:
У меня есть модель, которая используется для привязки строки запроса, которая следует за диалогом имен в c#, но строка запроса находится в другом диалоге имен. Как указать пользовательское имя свойства для свойств модели, которым присвоен vis FromUrl
?
// Will NOT work
public class FormatDatabaseRequest
{
[JsonProperty("_type")]
public string Type { get; set; }
[JsonProperty(Name = "awef_flag")]
public string AwefFlag { get; set; }
}
// Controller.cs
[HttpPost]
public async Task<HttpResponseMessage> FormatDatabaseAsync([FromUri] FormatDatabaseRequest request) {}
// Sample URL (QueryString MUST be named _type and awef_flag)
// https://localhost:43521/myControllerName?_type=asdfaamp;awef_flag=asdf
Ответ №1:
Если вы хотите получать поля из такого URL-адреса, я рекомендую использовать [FromQuery]
атрибут, например:
public async Task<HttpResponseMessage> Get([FromQuery] FormatDatabaseRequest data)
Затем такой URL-адрес
https://localhost:43521/myControllerName?type=asdfaamp;awefflag=asdf
Будет правильно проанализирован ваш объект
Комментарии:
1. Мне нужен
myControllerName?_type=asdfaamp;awef_flag=asdf
в качестве моего URL-адреса2. Кроме того, FromQuery является частью AspNetCore, мне нужно для AspNet
Ответ №2:
json не имеет ничего общего со строкой запроса. Я не понимаю, почему вам не нравятся свойства подчеркивания, но вы можете скрыть их вот так
public class FormatBaseRequest
{
public string _Type { get; set; }
public string Awef_flag{ get; set; }
}
public class FormatDatabaseRequest:FormatBaseRequest
{
public string Type
{
get { return _Type; }
set { _Type=value ; } //or leave just get
}
public string AwefFlag
{
get { return Awef_flag; }
set { Awef_flag=value ; } //or leave just get
}
}
вы можете использовать его для строки запроса и для c#