我有一个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
但我想调用其他类型网址的动作,如 https://myapplicationlink/ControllerName/NewAction/30
但是当我这样做时,我收到了一个错误
参数字典包含参数'Id'的非可空类型的'null'条目'System.Int32'的方法'System.Threading.Tasks.Task`1 [System.Web.Mvc.ActionResult] NewAction(Int32)'
如何使操作接受其他类型的URL?
2 回答
路径模板占位符中的参数名称区分大小写 .
您有
Id
(大写字母I),而模板为id
(小写) .这与
{controller}/{action}/{id}
路线模板不匹配重命名参数以匹配路径模板
Task<ActionResult> NewAction(int id) { ....
首先,检查您是否配置了路由
{controller}/{action}/{id}
.然后将
Id
参数名称重命名为id
.