Asp.net MVC 5 выполняет действия контроллера для принятия параметров типа отдыха - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть приложение ASP.NET MVC5, и я написал новое действие контроллера в одном из контроллеров.

У меня есть сценарий, в котором я хочу вызвать это новое действие контроллера из другого приложения (React).

Ниже приведено мое новое действие контроллера.

public async Task<ActionResult> NewAction(int Id)
{
    var project = await _repository.GetProjectFromIdAsync(Id);
    if (project == null) return HttpNotFound();
    return RedirectToAction("ExistingAction", new { id = project.Id });
}

Я могу успешно вызвать действие с помощью этого URL - https://myapplicationlink/ControllerName/NewAction?Id=30

Но я хочу вызвать действиес URL-адресом типа отдыха, подобным https://myapplicationlink/ControllerName/NewAction/30

Но когда я делаю это, я получаю ошибку

Словарь параметров содержит пустую запись для параметра 'Id' ненулевого значениявведите «System.Int32» для метода «System.Threading.Tasks.Task`1 [System.Web.Mvc.ActionResult] NewAction (Int32) '

Как выполнить действие, чтобы принять остальныевведите URL?

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Сначала проверьте, настроили ли вы маршрутизацию {controller}/{action}/{id}.

Затем переименуйте имя параметра Id в id.

0 голосов
/ 09 декабря 2018

Имена параметров в заполнителях шаблона маршрута чувствительны к регистру.

У вас есть Id (заглавные буквы I) , а шаблон как id (строчные буквы) .

Это не соответствует шаблону маршрута {controller}/{action}/{id}

Переименовать параметр для соответствия шаблону маршрута Task<ActionResult> NewAction(int id) { ....

public async Task<ActionResult> NewAction(int id) {
    var project = await _repository.GetProjectFromIdAsync(id);
    if (project == null) return HttpNotFound();
    return RedirectToAction("ExistingAction", new { id = project.Id });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...