从控制器调用正确的方法(MVC、RAZOR)
Call correct method from Controller (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>
}
当我尝试 "click" link "Edit" 我有问题二 运行 我的第二个 get 方法和打开视图 edit:
[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 })
试试这个:
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
{
var @books = await Task.Run(() => _booksService(booksId));
return View("edit", @books);
}
我有 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>
}
当我尝试 "click" link "Edit" 我有问题二 运行 我的第二个 get 方法和打开视图 edit:
[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 })
试试这个:
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
{
var @books = await Task.Run(() => _booksService(booksId));
return View("edit", @books);
}