调用控制器(MVC,Razor)的正确方法



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);            
}

相关内容

  • 没有找到相关文章

最新更新