2011-01-13 3 views
2

У меня есть MasterPage, в моей папке Views \ Shared. У меня есть index.aspx в папке Views \ Home. И у меня есть login.ascx (пользовательский элемент управления) в моей папке «Просмотры \ Пользователь». Файл ASCX добавляется к моему MasterPage:ASP.Net MVC Controller не называется

<% Html.RenderPartial(@"~\Views\User\login.ascx");%> 

код в ASCX указует отправку формы в UserController.cs в моей папке Controllers.

Вот ASCX:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BudgieMoneySite.Models.SiteUserLoginModel>" %> 
<% using (Html.BeginForm("UserLogin", "User")) 
    {%> 
<table width="300"> 
    <tr> 
     <td colspan="3" align="center"> 
      User Login 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <%=Html.LabelFor(m => m.Username)%> 
     </td> 
     <td> 
      <%=Html.TextBoxFor(m => m.Username)%> 
     </td> 
     <td> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <%=Html.LabelFor(m => m.Password)%> 
     </td> 
     <td> 
      <%=Html.PasswordFor(m => m.Password)%> 
     </td> 
     <td> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     </td> 
     <td> 
      <%=Html.CheckBoxFor(m => m.RemeberMe)%><%=Html.LabelFor(m => m.RemeberMe)%> 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
     </td> 
     <td colspan="3" align="right"> 
      <input id="Submit1" type="submit" runat="server" value="Login" /> 
     </td> 
    </tr> 
</table> 
<% 
    } // End Using.%> 

Если я Ctrl + щелкните имя контроллера и метод, в области Html.BeginForm, он принимает меня мой метод, который должен вызываться при нажатии Sybmit.

Метод, который это должен вызвать в моем UserController, имеет этот запрограммированный:

 [HttpPost] 
    public ActionResult UserLogin(SiteUserLoginModel model) 
    { 
     try 
     { 
      if (MembershipService.ValidateUser(model.Username, model.Password)) 
      { 
       FormService.SignIn(model.Username, model.RemeberMe); 
       PersonDto user = SiteUserLoginModel.LoadLoggedInUserDetails(model.Username); 
       Session.Add("current_firstname", user.Firstname); 
       Session.Add("current_userid", user.PersonId); 
      } 
      return RedirectToAction("Index", "Home"); 
     } 
     catch (ArgumentException e) 
     { 
      ViewData["ErrorMessage"] = e.Message; 
      return RedirectToAction("Index", "Home"); 
     } 
    } 

Однако, когда я нажимаю кнопку отправки во время выполнения, этот метод никогда не вызывается. Экран просто обновился. Я думаю, что HomeController действительно срабатывает, поскольку обновляется индексный экран. Но точка останова в моем методе выше никогда не срабатывает.

Что я делаю неправильно?

+0

Можете ли вы опубликовать, как выглядит тег html формы, когда он сгенерирован, а также как выглядит кнопка отправки html? – Vadim

ответ

1

Ребята, я нашел проблему, и это вопрос, который у меня был 2 недели назад, но totoally забыл. На главной странице был тег формы! Элемент формы пользовательского элемента управления скрывался на странице главной страницы. Я удаляю теги формы с главной страницы, и она разрешена.

1

Я хотел бы начать удаление атрибута runat="server" из вашей кнопки отправки ...

<input id="Submit1" type="submit" value="Login" /> 
+0

Я удалил это, и все же - все еще не работаю. – Craig

1

Ваша форма в BeginForm не установлен в POST.

Попробуйте следующее: Html.BeginForm("UserLogin", "User", FormMethod.Post).

+0

Формы mvc по умолчанию являются POST. –

+0

Да, я все равно пробовал, но все равно не работает. – Craig

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