2010-08-31 3 views
0

Все, что я пытаюсь сделать, это создать элемент управления входами, который я хочу разместить на своей домашней странице.MVC Partial Login Control

Ive создал Войти пользовательский элемент управления следующим образом:

<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(Of MyWebsite.LogOnModel)" %> 
<% Using Html.BeginForm() %> 
    <%: Html.ValidationSummary(True, "Login was unsuccessful. Please correct the errors and try again.")%> 
    <div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(Function(m) m.UserName) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(Function(m) m.UserName) %> 
       <%: Html.ValidationMessageFor(Function(m) m.UserName) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(Function(m) m.Password) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.PasswordFor(Function(m) m.Password) %> 
       <%: Html.ValidationMessageFor(Function(m) m.Password) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.CheckBoxFor(Function(m) m.RememberMe) %> 
       <%: Html.LabelFor(Function(m) m.RememberMe) %> 
      </div> 
      <p> 
       <input type="submit" value="Log On" /> 
      </p> 

    </div> 
<% End Using %> 

я чем оказал это на странице дома index.aspx:

Html.RenderPartial("UsrCtlLogin") 

Он показывает правильно на домашней странице. Но мой вопрос заключается в том, как подключить его к логике AccountController. т. е. при щелчке по логину я хочу, чтобы он запускал метод протокола LogOn и проверял пользователя (показывая недопустимое сообщение, если указаны недопустимые данные), и перенаправляет их на страницу, если они успешны.

Как создать связь между пользовательским элементом управления и AccountController?

Заранее спасибо

ответ

3

По умолчанию формы разместит к текущему URI. Так что, если это ваша домашняя страница, вы можете создать метод в вашем доме управления:

[HttpPost] 
public ActionResult Index() { 
    //authenticate 
    return View(); 
} 

Но вы действительно не хотите, чтобы смешивать обязанности контроллера. Поэтому измените действие своих форм, чтобы опубликовать их в/users/login или любой другой способ, который вы хотите использовать в AccountController.

using (Html.BeginForm("Login", "Account", FormMethod.Post))