2011-01-13 61 views
2

我有一個MasterPage,在我的Views \ Shared文件夾中。我在我的Views \ Home文件夾中有一個index.aspx。我在我的Views \ User文件夾中有一個login.ascx(用戶控件)。該ASCX文件添加到我的母版:ASP.Net MVC控制器不被調用

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

在ASCX代碼指向的提交表單在我的控制器文件夾UserController.cs。

這裏的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 2011-01-13 00:43:09

回答

1

夥計們,我發現了這個問題,這是我回到了2周後的一個問題,但完全忘了。母版頁有一個Form標籤!用戶控件的Form tage被主頁的隱藏。我從母版頁中刪除了表單標籤,並且已解決。

1

我將開始從您的提交按鈕,清除runat="server"屬性...

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

我刪除了那個,但仍然沒有工作。 – Craig 2011-01-13 03:32:42

1

你在BeginForm形式沒有被設置爲POST

試試這個:Html.BeginForm("UserLogin", "User", FormMethod.Post)

+0

mvc表單默認是POST。 – 2011-01-13 01:56:48