如何在Asp.NetMVC中从Blazor视图向控制器传递ID

e4eetjau  于 2023-06-25  发布在  .NET
关注(0)|答案(1)|浏览(146)

无法将ID从blazor视图传递给Asp.Net MVC应用程序的控制器
我试图删除一个值,这是采取从数据库,但我无法删除它的id是来的视图,我可以能够列出这些值也,但当我试图删除id是不是从视图传递到控制器,以下是代码我已经使用

@using Microsoft.AspNetCore.Components
@inject System.Net.Http.HttpClient HttpClient

<h3>DesignationList</h3>

<table class="table">
<thead>
    <tr>
        <th>
            NumericId
        </th>
        <th>
            Name
        </th>
        <th>
            Slug
        </th>
        <th>
            Status
        </th>
        <th>
            Action
        </th>
    </tr>
</thead>
<tbody>
    @foreach (var item in Designation)
    {
     <tr>
        <td>
        @item.NumericId
        </td>
        <td>
        @item.Name
        </td>
        <td>
            @item.Slug
        </td>
        <td>
            @item.Status
        </td>

        <td>

            <a href="Delete" asp-action="Delete" asp-route- 
           id="@item.Id" asp-controller="Designation">

        </td>
     </tr>
    }
  </tbody>
 </table>
@code {[Parameter] public 
IEnumerable<Global.Light.Time.Models.Designation> Designation { 
get; set; } }

 //Controller
   public ActionResult Delete(Guid id)
    {
        var dynamicObj = new 
        DesignationRepository().Read(id);
        var retval = dynamicObj.Designation[0];
        return View(retval);
    }

    // POST: DesignationController/Delete/5
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Delete(Guid id, Designation 
    lookupDesignation)
    {
        try
        {

            var eleDelete = new DesignationRepository().Delete(id);
            return RedirectToAction(nameof(Index));
        }
        catch (Exception ex)
        {
            return View();
        }
     }
  }

请帮我找到一个解决方案,谢谢!

9jyewag0

9jyewag01#

您正在控制器方法上使用ValidateAntiForgeryToken属性来执行防伪令牌验证,但您尚未提供任何防伪令牌。
您需要使用表单而不是链接来发回令牌。尝试使用类似下面的方法,将“ControlerName”与控制器的名称交换。

@using (Html.BeginForm("Delete", "ControllerName")) {
    @Html.AntiForgeryToken()
}

相关问题