Я новичок в программировании и, в частности, с 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: У меня также нет настраиваемых маршрутов.
Это сработало отлично. Спасибо, Стивен. – mrtiev