ASP.NET Framework表单发布请求和操作链接标记

时间:2018-03-09 13:40:12

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我正在将我的ASP.NET核心应用程序迁移到ASP.NET框架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后,它不会调用Login操作控制器,也不会提交任何发布请求。

2)使用@Html.ActionLink

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

<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 个答案:

答案 0 :(得分:1)

<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> 

另外,Core和Framework完全不同。您的asp-*语法都不适用于Framework。