Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 从控制器(MVC、RAZOR)调用正确的方法_Asp.net_Asp.net Mvc_Web Services_Razor_Controller - Fatal编程技术网

Asp.net 从控制器(MVC、RAZOR)调用正确的方法

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>

我有BooksController和方法Get:

[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
时会发生什么?