В настоящее время я использую стандартный Управление страницу, которая выглядит как:ViewBag и форматирование
public ActionResult Manage(string type = "")
{
ViewBag.Type = type;
switch (type)
{
case "EmailAddress":
ViewBag.EmailAddress = lol.UserProfiles.Find((int)Membership.GetUser().ProviderUserKey).EmailAddress;
break;
case "Password":
break;
default:
break;
}
//ViewBag.ReturnUrl = Url.Action("Manage/" + type);
return View();
}
Теперь моя Управление Модель страница выглядит следующим образом:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Manage(ManageViewModel model)
{
if (ModelState.IsValid)
{
if (model.EmailAddressModel != null)
{
try
{
int userID = (int)Membership.GetUser().ProviderUserKey;
var User = lol.UserProfiles.First(f => f.UserId == userID);
User.EmailAddress = model.EmailAddressModel.EmailAddress;
int saveStatus = lol.SaveChanges();
if (saveStatus == 1)
{
ViewBag.StatusMessage = MessagesEnum.ChangeEmailSuccess;
return RedirectToAction("Manage/EmailAddress", "Account");
}
else
{
ModelState.AddModelError("", MessagesEnum.ChangeEmailFailed);
}
}
catch { }
}
else
{
// ChangePassword will throw an exception rather than return false in certain failure scenarios.
bool changePasswordSucceeded;
try
{
changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.PasswordModel.OldPassword, model.PasswordModel.NewPassword);
}
catch (Exception)
{
changePasswordSucceeded = false;
}
if (changePasswordSucceeded)
{
ViewBag.StatusMessage = MessagesEnum.ChangePasswordSuccess;
return RedirectToAction("Manage/Password", "Account");
}
else
{
ModelState.AddModelError("", MessagesEnum.ChangePasswordFailed);
}
}
}
else
{
}
return View(model);
}
Мой ManageViewModel класс:
public class ManageViewModel
{
public LocalPasswordModel PasswordModel { get; set; }
public LocalEmailAddressModel EmailAddressModel { get; set; }
}
То, что я пытался сделать, это сделать, если они получают доступ к нескольким страницам в разделе Управление такими как/Управление/Пароль и/Управление/Emai lAddress и в соответствии с этими ссылками он разместит другую страницу. Теперь, прежде всего, это правильный способ сделать это/это нормально? Во-вторых, если это так, я пытался передать сообщение Sucess после того, как они изменили свой адрес электронной почты на страницу/Manage/EmailAddress, но ViewBag.StatusMessage ничего не выводит на мою HTML-страницу. Почему это?
Я сделал немного больше исследований, и вот мои выводы (скажите, правильно это или нет). Так что я должен изменить параметры маршрута и так что-то вроде:
routes.MapRoute(
name: "Manage",
url: "Account/{controller}/{action}/{id}",
defaults: new { controller = "Manage", action = "Index", id = UrlParameter.Optional}
);
И просто сделать новый контроллер под названием Управление и создавать новые функции внутри контроллера для разных страниц, как ChangeEmail и Changepassword?
Ваш счетчик сменных сумм закомментирован. А вы знаете это? – Botonomous
Я не следую? –
ViewBag.ReturnUrl = Url.Action («Управление /» + тип); имеет два // перед кодом. Это комментарий и пропущен переводчиком. Удалите их и Viewbag.ReturnURL будет установлен. – Botonomous