asp.net - 从控制器调用正确的方法(MVC,RAZOR)
问题描述
我有BooksController方法Get:
[HttpGet]
public async Task<IActionResult> Get(string name)
{
@books = await _booksService.BrowseAsync(name);
return View("books",@books);
}
并查看books.cshtml:
@model IEnumerable<WebPart.Infrastructure.DTO.BooksDto>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
@Html.ActionLink("Edit", "get", new { id = item.Id })
<br />
</tr>
}
当我尝试“单击”链接“编辑”时,我遇到了问题二,运行我的第二个 get 方法并打开视图编辑:
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
{
var @books = await _booksService.GetAsync(booksId);
return View("edit", @books);
}
这两个方法GET在同一个BooksController中。
我在这里做错了什么?因为它总是运行第一个GET方法。
解决方案
您的控制器操作需要一个名为booksId
:
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
您正在发送一个名为id
:
@Html.ActionLink("Edit", "get", new { id = item.Id })
名称需要匹配。如果需要调用参数booksId
,调用它booksId
:
@Html.ActionLink("Edit", "get", new { booksId = item.Id })
推荐阅读
- python-3.x - Keras:带有自定义生成器的 badalloc
- java - OpenNLP Tokenizer 不检测属于一起的单词?
- asp.net-core - 在 405 HTTP 错误上捕获并响应自定义 json - ASP.NET CORE API
- javascript - 在 2 个反应服务器应用程序之间发送和捕获 URL 参数
- java - 通过命令行使用 mvn 运行 Java 程序
- python - 如何在 Python 中将日期范围划分为月份?
- groovy - Jmeter groovy在Json中返回一组ID
- javascript - 使用 Fetch API 的 javascript HTTP GET 返回 401 Unauthorized 但在 Postman 中有效
- java - 从不同长度的用户字符串中读取到数组中
- oop - 状态机、封装和 OOP 设计