Asp.net 从控制器(MVC、RAZOR)调用正确的方法
我有BooksController和方法Get:Asp.net 从控制器(MVC、RAZOR)调用正确的方法,asp.net,asp.net-mvc,web-services,razor,controller,Asp.net,Asp.net Mvc,Web Services,Razor,Controller,我有BooksController和方法Get: [HttpGet] 公共异步任务获取(字符串名称) { @books=wait\u booksService.BrowseAsync(名称); 返回视图(“books”、@books); } 并查看books.cshtml: @model IEnumerable<WebPart.Infrastructure.DTO.BooksDto> @foreach (var item in Model) { <tr>
[HttpGet]
公共异步任务获取(字符串名称)
{
@books=wait\u booksService.BrowseAsync(名称);
返回视图(“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>
}
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
{
var @books = await _booksService.GetAsync(booksId);
return View("edit", @books);
}
@model IEnumerable
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Price)
@ActionLink(“编辑”,“获取”,新建{id=item.id})
}
当我尝试“单击”链接“编辑”时,我遇到了两个问题:运行第二个get方法并打开viewEdit:
@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>
}
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
{
var @books = await _booksService.GetAsync(booksId);
return View("edit", @books);
}
[HttpGet(“{booksId}”)]
公共异步任务获取(Guid booksId)
{
var@books=wait_booksService.GetAsync(booksId);
返回视图(“编辑”、@books);
}
这两种方法在同一个书里
我做错了什么?因为它总是运行first GET方法。您的控制器操作需要一个名为
booksId
的参数:
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid booksId)
@Html.ActionLink("Edit", "get", new { booksId = item.Id })
名称需要匹配。如果需要调用参数booksId
,请调用它booksId
:
[HttpGet("{booksId}")]
public async Task<IActionResult> Get(Guid 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);
}
[HttpGet(“{booksId}”)]
公共异步任务获取(Guid booksId)
{
var@books=wait Task.Run(()=>_bookservice(booksId));
返回视图(“编辑”、@books);
}
部分是猜测,但它需要一个名为booksId
的参数,您将发送一个名为id
的参数。匹配它们?是的,我看到的链接是:Books?id=a40ab714-b96e-40db-a55e-e853bdf16a87,但它应该运行_booksService.GetAsync和view edit需要打开,对吧,当您发送名为booksId
的参数而不是id
时会发生什么?