2009-07-14 85 views
1

我想添加簡單的登錄頁面到ASP.NET MVC應用程序。我實際上使用夏普拱模板項目。因此,我向LoginControl()中添加了3個方法Login(),Logout()和DoLogin(),Login()只返回View(「Login」)。ASP.NET MVC:提交呈現相同的頁面

現在,當我瀏覽到/用戶/登錄,我的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> 

然而,當我點擊提交,請求再次做出登錄() - 我可以看到當我在那裏設置斷點時,即使在生成的HTML頁面表單中有action/Users/DoLogin,它也不會嘗試去UsersController.DoLogin()。當我在瀏覽器中手動輸入/ Users/DoLogin時,它被調用並且我的斷點被觸發。

我已經把我的頭撞了幾個小時了......我沒有看到這裏有什麼錯。

+1

你可以發佈製作的HTML嗎?即,呈現頁面和「查看源代碼」 – 2009-07-14 11:26:04

+0

非常感謝你;-)我_did_檢查後來的源,但是當我開始美化它後,我發現這個:

然後我意識到site.master: 似乎當我在VS2008編輯器中打開.master並嘗試添加菜單時,它添加了一個ASP.NET窗體......它封裝了我的MVC窗體並阻止了。 刪除這個額外的表單解決了這個問題。 – queen3 2009-07-14 12:00:51

回答

0

好吧,所以感謝jamesshannon我發現這是因爲我的site.master頁面突然將所有內容都包裝到ASP.NET表單中 - 可能是因爲我使用VS2008編輯器。不知道這種行爲是否非常好,但現在我知道了。

0

必須是路由問題。你能否粘貼你的路由,你也可以嘗試this路由調試器

相關問題