1

我是编程新手,特别是 C#/Asp.Net MVC,我已经尝试了一段时间来让它工作,但我已经没有想法了。我试图在网上找到答案,但还没有提出解决方案(即使在阅读并尝试了我为类似问题找到的方法之后)。这个论坛发布新东西有点吓人,但我现在卡住了。所以我想我会试一试。

我有这个项目,我正在使用 bootstrap、asp.net 和 C# 创建一个网页,该网页将是一个类似电子商务的网站。目前我正在开发登录系统。我正在使用 SimpleMembership 并尝试创建一个登录表单,该表单不需要仅用于登录的新页面,它实际上位于共享视图上。

这是登录部分表单的视图:

@model FakeStore.ViewModels.MenuSuperiorModel
<form class="navbar-form navbar-right">
    @if (!WebSecurity.IsAuthenticated)
    {
        using (Html.BeginForm("Autentica", "Login", FormMethod.Post))
        {
            <div class="form-group">
                @Html.TextBoxFor(m => m.login, new { @class="form-control",         placeholder="Login" })
            </div>
            <div class="form-group">
                @Html.TextBoxFor(m => m.senha, new { @class ="form-control", placeholder="Senha"})
            </div>
                @Html.HiddenFor(m => m.CarrinhoCount)
            <input type="submit" value="Sign in" class="btn btn-success" />
            <a class="btn btn-success" href="~/Usuario/Form">Register</a>
        }

    }

    else if (WebSecurity.IsAuthenticated)
    {
        <span class="label label-primary">Welcome, @(WebSecurity.CurrentUserName)!</span>
    }
</form>

该视图是布局页面上另一个局部视图的子视图。

这是调用 Login Form 视图的 Partial 视图:

<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        @Html.Partial("_CarrinhoCompraTopMenu")
        <div id="navbar" class="navbar-collapse collapse">
        <!-- vamos ver se dá problema esse _LoginMenu -->
        @Html.Partial("_LoginMenu")
        </div><!--/.navbar-collapse -->
    </div>
</nav>

这是带有 BeginForm 方法应该调用的 Action 的控制器:

public class LoginController : Controller
{
    // GET: Login
    private UsuarioDAO udao;

    public LoginController(UsuarioDAO udao)
    {
        this.udao = udao;
        if (!WebSecurity.Initialized)
        {
            WebSecurity.InitializeDatabaseConnection("StoneECommerce", "Usuario", "Id", "Login", true);
        }
    }
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Autentica(MenuSuperiorModel menuSuperiorModel)
    {
        if (WebSecurity.Login(menuSuperiorModel.login, menuSuperiorModel.senha))
        {
            return RedirectToAction("Form", "Produto");
        }
        else
            ModelState.AddModelError("login.Invalido", "Login ou senha incorretos");
        return View("Index");
    }

    public ActionResult LoginMenu()
    {
        return PartialView("_LoginMenu");
    }

我正在尝试获取提交按钮以将 MenuSuperiorModel 发送到 LoginController 的操作 Autentica,以便它可以对用户进行身份验证。但问题是它甚至没有采取那种行动。我尝试在其上设置断点,但未调用该操作。我错过了什么吗?我真的很感激帮助。

ps:我也没有配置自定义路由。

4

1 回答 1

1

您的嵌套表单是无效的 html 且不受支持。移除外部<form class="navbar-form navbar-right">元素。

于 2015-04-09T22:21:09.777 回答