Элементы управления входом в главную страницу ASP.NET MVC - PullRequest
3 голосов
/ 12 ноября 2009

У меня есть веб-сайт ASP.NET MVC 2, на котором я хотел бы разместить элементы управления входом в главную страницу. Я хочу, чтобы любые сообщения об ошибках валидации также отображались на главной странице. Как бы я поступил так? Если я сделаю что-то вроде этого:

<% using (Html.BeginForm("LogOn", "Account", FormMethod.Post))  {  %>

  <%= Html.LabelFor(d => d.UserName)%>:
  <%= Html.EditorFor(d => d.UserName)%>

  <%= Html.LabelFor(d => d.Password)%>:
  <%= Html.Password("Password")%>

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

  <%= Html.ValidationSummary() %>

<% } %>

... метод контроллера аккаунта вызывается просто отлично. Тем не менее, когда я возвращаю View() из метода, я получаю сообщение об ошибке, что не существует представления с именем «LogOn». Как мне достичь желаемого результата.

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

Когда вы вызываете действие LogOn вместе с именем пользователя и паролем, вы можете передать ему обратный URL-адрес, на который он будет перенаправлен при успешном входе в систему вместо возврата представления.

0 голосов
/ 12 ноября 2009

Мне неприятно спрашивать очевидное, но из вашего поста неясно: есть ли у вас представление "LogOn" в папке "Account" в "Views"?

Если вы просто вернете View () из действия, он будет искать представление с тем же именем, что и действие (в данном случае «LogOn»)

хмм ... вы можете просто вернуть любой View из контроллера входа в систему: как вы собираетесь заставить ViewModel перейти к этому представлению? Etc

В лучшем случае вы можете получить реферальный URL из запроса ... затем определить контроллер / действие по нему и вернуть RedirectAction () .. но на этот раз с ошибками модели.

Еще две вещи, о которых я могу думать:

  1. Включите ваш пользовательский логин-контроль в iframe. вам нужно перевести частичный вид в полный вид.

  2. Используйте jQuery

    $. Get (url, null, function (result) { $ (LoginDiv) .html (результат);
    });

отправить действие входа в систему, затем из контроллера входа вернуть PartialView («LogOn»);

В любом случае, у вас есть частичное представление страницы, а остальное содержимое на странице не изменится.

...