没有调用ASP.Net MVC控制器

时间:2011-01-13 00:20:53

标签: c# asp.net-mvc

我的Views \ Shared文件夹中有一个MasterPage。我的Views \ Home文件夹中有一个index.aspx。我在Views \ User文件夹中有一个login.ascx(用户控件)。 ascx文件已添加到我的MasterPage:

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

ascx中的代码将提交表单指向我的Controllers文件夹中的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确实会触发,因为索引屏幕会刷新。但是上面我方法中的断点从未触发过。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

我会从您的提交按钮中删除runat="server"属性...

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

答案 1 :(得分:1)

BeginForm中的表单未设为POST

试试这个:Html.BeginForm("UserLogin", "User", FormMethod.Post)

答案 2 :(得分:1)

伙计们,我发现了这个问题,这是我2个星期前的一个问题,但是它完全忘了。母版页有一个Form标签!并且用户控件的Form tage被主页的一个隐藏。我从母版页中删除了表单标签,并将其解析。