Когда пользователи посещают мою домашнюю страницу и нажимают кнопку входа, открывается диалоговое окно jquery ui, которое содержит обычную форму.
@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { @name = "user-login-form", @id = "user-login-form" }))
{
<fieldset style="margin: 10px 0 0 0;">
<label for="name">
Username</label>
<input type="text" name="UserName" id="username" class="text ui-widget-content ui-corner-all" />
<label for="password">
Password</label>
<input type="password" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
</fieldset>
}
Эта форма существует в частичном представлении, которое является частью представления индекса на домашнем контроллере. Как вы можете видеть, он отправляет сообщение о входе в систему в контроллере учетной записи. Следующее - это действие.
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl) // rename either the model or the view name field to match.
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
AuthenticationService.SignIn(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
if (MembershipService.IsUserInRole(model.UserName, "ServiceProvider"))
{
return RedirectToAction("Index", "ServiceProvider");
}
return RedirectToAction("Index", "Project");
}
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
// If we got this far, something failed, redisplay form
return View(model);
}
Как вы видите, если модель недействительна, она отправляет вас в представление LogOn (не частичное), которое является частью контроллера Account.
Проблема в том ... заполняю ли я форму из частичного или обычного вида, так или иначе, на странице / Account / LogOn с ошибкой 500. Я прошел через это сто раз, и я не могу понять, что происходит не так. Данные верны. Имя пользователя и пароль проверены, но я никогда не смогу выполнить действие Index на контроллере проекта.
Индексное действие в контроллере проекта существует, и все, что он делает, это возвращает View (). Файл Index.cshtml существует. Даже если я уберу все модели и сделаю страницу максимально простой, у меня все равно останется та же проблема. Оставаться на странице / Account / Logon с ошибкой 500 вместо того, чтобы перейти к /Project/Index.
Я провел некоторый поиск и нашел кое-что о перенаправлении из ajax и т. Д. И кое-что, говорящее, что вы не должны перенаправлять с частичного, но даже с обычного представления это не работает. Не уверен, что это может быть проблема IIS или что-то? Определенно готов попробовать что-нибудь ... боролся за это в течение 2 дней.
Спасибо