Итак,
У меня есть приложение, которое использует MVC Areas.Маршрут для контроллера выглядит как
[Route("Settings/{something}")]
Тогда у меня есть действие
[Route("suggest/{term}")]
public ActionResult Suggest(string something, string term).
Я пытаюсь вызвать действие Suggest из javascript
var suggestUri = "suggest/";
$searchInput.autocomplete({
source: function (request, response) {
$.ajax({
type: "GET",
url: suggestUri + request.term,
dataType: "json",
success: function (data) {
response(data);
},
error: function (err) {
console.log(err);
}
});
},
minLength: 3
});
Из моегос этой точки зрения этот URL-адрес вызова ajax должен быть
http://localhost:7311/Settings/firstValue/suggest/term
Но фактический результат -
http://localhost:7311/Settings/suggest/term
Отсутствует {something}
.сделать неправильно, но я понятия не имею, что.
LE: Я провел несколько тестов.
Если я применяю к своему контроллеру другой маршрут, например
[Route ("Настройки / {что-то} / a")]
Результат
http://localhost:7311/Settings/firstValue/suggest/term
Когда это должно быть
http://localhost:7311/Settings/firstValue/a/suggest/term
Затем я попытался сделать
[Route("Settings/{something}/a/b")]
Результат:
http://localhost:7311/Settings/firstValue/a/suggest/term
Когда это должно быть
http://localhost:7311/Settings/firstValue/a/b/suggest/term
Такое ощущение, что mvc всегда пропускает последний параметр из моего контроллера.Любая причина?
LE2:
В Startup.cs MapRoute выглядит следующим образом
app.UseMvc(routes =>
{
routes.MapRoute(
name: "somethingBased",
template: "{area:exists}/{somethingBased?}/{controller=Home}/{action=Index}");
routes.MapRoute(
name: "home",
template: "{controller=Home}/{action=Index}/{application?}");
});