2015-04-09 2 views
0

Я новичок в программировании и, в частности, с C#/Asp.Net MVC, и я уже давно пытаюсь заставить это работать, и у меня заканчиваются идеи. Я попытался найти ответ в Интернете, но еще не придумал решение (даже после прочтения и проверки методов, которые я нашел для подобных вопросов). Этот форум немного запугивает, публикуя новые вещи, но я застрял прямо сейчас. Поэтому я подумал, что я сделаю это.Html.BeginForm не запускает действие контроллера

У меня есть этот проект, в котором я использую 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> 

Это мнение является потомком другого частичного вида, который находится на странице макета.

Это частичный вид, что вызывает вид Войти Форма:

<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 следует вызывающему:

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"); 
    } 

Я пытаюсь получить submit, чтобы отправить MenuSuperiorModel в действие LoginController Autentica, чтобы он мог аутентифицировать пользователя. Но дело в том, что он даже не подходит к этому действию. Я попытался установить на нем точку останова, и действие не вызывается. Я что-то упускаю? Я очень ценю помощь.

ps: У меня также нет настраиваемых маршрутов.

ответ

1

У вас есть вложенные формы, которые являются недопустимыми html и не поддерживаются. Удалите внешний элемент <form class="navbar-form navbar-right">.

+0

Это сработало отлично. Спасибо, Стивен. – mrtiev

Смежные вопросы