代码之家  ›  专栏  ›  技术社区  ›  0xburned

ASP。NET Framework表单post请求和操作链接标记

  •  0
  • 0xburned  · 技术社区  · 7 年前

    我正在迁移我的ASP。NET核心应用程序到ASP。NET framework 471和我面临两个问题:

    (1) .cshtml 表单模板

    ASP。NET核心表单页面看起来像(工作正常)并调用 Login 控制器中的操作

    <form asp-controller="Home" asp-action="Login" method="post">
        <input type="text" name="Username" placeholder="Enter your username">
        <input type="password" name="Password" placeholder="Enter your password">
        <button type="submit">Log In</button>
    </form>
    

    但是,在迁移到之后。NET Framework单击submit按钮时,它不会调用 登录名 操作控制器,未提交post请求。

    2) 使用 @Html.ActionLink

    以下代码在核心应用程序中运行良好

    <ul class="br-sideleft-menu">
        <li class="br-menu-item">
            <a class="br-menu-link" asp-area="" asp-controller="Home" asp-action="Dashboard">
                <i class="menu-item-icon icon ion-ios-home-outline tx-20"></i>
                <span class="menu-item-label">Dashboard</span>
            </a>
        </li>
    </ul>
    

    但是,在迁移到框架应用程序时,该链接不起作用(甚至不可单击)。

    我知道我需要利用 @Html。ActionLink 组件,但我不确定如何对上述代码进行模板化,使其包含所有标记和类。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ashley Medway Karthi    7 年前
    <form asp-controller="Home" asp-action="Login" method="post">
        <input type="text" name="Username" placeholder="Enter your username">
        <input type="password" name="Password" placeholder="Enter your password">
        <button type="submit">Log In</button>
    </form>
    

    应该是

    @using(Html.BeginForm("Login", "Home", FormMethod.Post))
    {
        <input type="text" name="Username" placeholder="Enter your username">
        <input type="password" name="Password" placeholder="Enter your password">
        <button type="submit">Log In</button>
    }
    

    <a class="br-menu-link" asp-area="" asp-controller="Home" asp-action="Dashboard">
         <i class="menu-item-icon icon ion-ios-home-outline tx-20"></i>
         <span class="menu-item-label">Dashboard</span>
    </a>
    

    应该是

    <a class="br-menu-link" href="@Url.Action("Dashboard", "Home")">
         <i class="menu-item-icon icon ion-ios-home-outline tx-20"></i>
         <span class="menu-item-label">Dashboard</span>
    </a> 
    

    另一方面,核心和框架是完全不同的。你的 asp-* 语法将在框架中工作。