i有 bookscontroller with Method 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>
}
尝试"单击"链接"编辑"我有问题两个运行我的第二个获取方法,然后打开视图 edit :
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
{
var @books = await _booksService.GetAsync(booksId);
return View("edit", @books);
}
这两个metod 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 })
尝试以下:
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
{
var @books = await Task.Run(() => _booksService(booksId));
return View("edit", @books);
}