#c# #asp.net-mvc #asp.net-core #asp.net-web-api
#c# #asp.net-mvc #asp.net-core #asp.net-web-api
Вопрос:
В Asp.net ядро 3.1 мы хотим настроить маршрутизацию.
У нас есть действие GetDepart
[HttpGet("GetDepart/{id}")]
public async Task<ActionResult<Depart>> GetDepart(int id)
{
//Return a Department
}
Как настроить маршрутизацию для замены косой черты (/) вопросительным знаком (?)
В URL-адресе,
поэтому вместо того, чтобы http://localhost:44339/Departs/GetDepart/1 , мы хотим иметь http://localhost:44339/Departs/GetDepart ?id=1
Комментарии:
1. Вы заменяете a / на a ? например, используя
string.Replace("/", "?");
, но это не то, что вы здесь ищете. Может быть, это может помочь: c-sharpcorner.com/UploadFile/ca2535/query-string-in-Asp-Net2. @Jelle эта ссылка не имеет ничего конкретного к этому вопросу.
3. @PanagiotisKanavos Статья разделена на две части, я должен был сразу отправить вторую часть: c-sharpcorner.com/UploadFile/1e050f /…
4. @Jelle первая статья посвящена веб-формам и на самом деле не говорит о строках запроса, за исключением отдельных фрагментов. Большая часть этого просто описывает создание формы WebForms с несколькими полями
5. @Jelle, вопрос о маршрутизации в Asp.net основной веб-api, мне нужно иметь «?» в URL-адресе вместо «/», и для этого требуется настройка в HttpGet verb для действия
Ответ №1:
Вы, вероятно, ищете источники.
Что-то подобное должно привести вас туда, где вы хотите быть…
[HttpGet("GetDepart")]
public async Task<ActionResult<Depart>> GetDepart([FromQuery] int id)
{
//Return a Department
}
Обратите [FromQuery]
внимание на атрибут id
параметра.
Комментарии:
1. Я настраиваю маршрутизацию с помощью атрибута [HttpGet(«GetDepart /{id}»)], но мне нужно поместить URL с косой чертой (/) как я могу заменить [HttpGet («GetDepart/{id}») на получение «?» вместо «/»
Ответ №2:
HttpGetAttribute нужен параметр шаблона, но шаблон не может содержать символ ‘?’, это сделано специально. Поэтому, если вы хотите использовать ?id=1
, вы можете использовать так (но этот способ отличается от маршрута, когда http://localhost:44339/Departs/GetDepart он также может перейти к действию):
[HttpGet("GetDepart")]
public async Task<ActionResult<Depart>> GetDepart(int id)
{
//Return a Department
}
Вам не нужно добавлять [FromQuery] раньше int id
, привязка модели найдет его в строке запроса по умолчанию.Вы можете обратиться к официальному документу привязки модели.
Комментарии:
1. Согласен, но, на мой взгляд, GetDepart/{id} лучше написать для маршрута
2. Спасибо, это работает, и если параметры — это модель, то я должен использовать HttpGet или я должен изменить его на HttpPost, потому что модель не может быть отправлена в URL.