我有一個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確實會觸發,因爲索引屏幕被刷新了,我想。但是我上面的方法中的斷點從來不會觸發。
我在做什麼錯?
你可以發表什麼形式的HTML標籤看起來像什麼時候它生成,以及提交按鈕HTML的樣子? – Vadim 2011-01-13 00:43:09