2011-01-13 6 views
2

내 Views \ Shared 폴더에 MasterPage가 있습니다. 내 Views \ Home 폴더에 index.aspx 있습니다. 내 Views \ User 폴더에 login.ascx (사용자 정의 컨트롤)이 있습니다. ASCX 파일 내 MasterPage에 추가됩니다 다음 ASCX에ASP.Net MVC 컨트롤러가 호출되지 않습니다.

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

코드는 내 컨트롤러 폴더에 UserController.cs에 양식을 제출 가리키고 있습니다. 내가 컨트롤러 이름과 방법을 클릭 + Ctrl을 경우

<%@ 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.%> 

에서, Html.BeginForm 영역에서 그것이 내가 Sybmit를 클릭 할 때 호출 할 필요가 나의 방법에 저를 취합니다

다음은 ASCX입니다. 그러나

 [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"); 
     } 
    } 

, 내가 런타임에 제출 버튼을 클릭하면,이 메서드가 호출되지 않습니다 :이 내 UserController에, 호출해야

방법은 정의 된이 코드를 가지고있다. 화면이 새로 고쳐졌습니다. IndexController가 새로 고침되면 HomeController가 실행됩니다. 하지만 위의 메서드에서 중단 점이 발생하지 않습니다.

내가 뭘 잘못하고 있니? 나는 당신의 제출 버튼에서 runat="server" 속성을 제거하기 시작할 것

+0

양식 html 태그가 생성 될 때 표시되는 내용과 제출 버튼 html의 모양을 게시 할 수 있습니까? – Vadim

답변

1

얘들 아, 문제를 발견했는데 2 주 전의 문제이지만 완전히 잊어 버렸다. 마스터 페이지에는 양식 태그가 있습니다! 그리고 사용자 정의 컨트롤의 폼은 마스터 페이지의 폼에 숨겨져있었습니다. 마스터 페이지에서 Form 태그를 제거하면 해결됩니다.

1

은 ...

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

나는 그것을 제거했지만 아직 - 여전히 작동하지 않습니다. – Craig

1

BeginForm에있는 당신의 양식은 POST로 설정되어 있지 않습니다.

시험해보십시오. Html.BeginForm("UserLogin", "User", FormMethod.Post).

+0

mvc 양식은 기본적으로 POST입니다. –

+0

그래, 어쨌든 시도했지만 여전히 작동하지 않습니다. – Craig

관련 문제