我正在尝试将简单的登录页面添加到ASP.NET MVC应用程序中。我实际上使用Sharp Arch模板项目。所以,我向UsersController添加了3个方法Login(),Logout()和DoLogin(),其中Login()只返回View(“Login”);
现在,当我导航到/ Users / Login时,我的aspx会显示提交按钮:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" Inherits="System.Web.Mvc.ViewPage" Title="Login" %>
<%@ Import Namespace="Orders.Web.Controllers" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
<h2>Login</h2>
<% if (ViewContext.TempData["message"] != null){ %>
<p><%= ViewContext.TempData["message"]%></p>
<% } %>
<% using (Html.BeginForm<UsersController>(u => u.DoLogin()))
{ %>
<div><% =Html.SubmitButton("submit") %></div>
<% } %>
</asp:Content>
然而,当我单击Submit时,再次请求Login() - 当我在那里设置断点时我可以看到它,它不会尝试转到UsersController.DoLogin(),即使在生成的HTML页面形式中有动作/用户/ DoLogin。当我在浏览器中手动输入/ Users / DoLogin时,它会被调用并且我的断点被触发。
我已经敲了几个小时......我在这里看不出什么错。
答案 0 :(得分:0)
必须是路由问题。你可以粘贴你的路线吗,你也可以试试this路线调试器
答案 1 :(得分:0)
好的,感谢jamesshannon,我发现这是因为我的site.master页面突然将所有内容都包装成ASP.NET表单 - 可能是因为我使用VS2008编辑器编辑了它。不确定这种行为是否非常好但是...现在我知道了。