2013-05-31 4 views
0

У меня есть встроенный метод в BootstrapBaseController.cs какMVC4 доступ метода одного контроллера к другим

public void Success(string message) 
{ 
    TempData.Add(Alerts.SUCCESS, message); 
} 

Я не использовал его, но пока я предполагаю, что это показывает, какое-то сообщение успеха, что я передать этот метод. Я хочу использовать этот метод в другом контроллере, который называется PortalController. В следующем методе я хочу показать сообщение об успешном завершении, когда пользователь добавляется в базу данных.

Предложения?

[HttpPost] 
     public ActionResult Register(RegisterModel user) 
     { 
      if (ModelState.IsValid && (user.Password == user.ConfirmPassword)) 
      { 
       var regUser = _db.Users.Create(); 

       regUser.UserName = user.UserName; 
       regUser.Password = user.Password; 

       _db.Users.Add(regUser); 
       _db.SaveChanges(); 
      } 
      return View(); 
     } 

ответ

0

Вам нужно сделать PortalController наследуется от BootstrapBaseController.

public class PortalController : BootstrapBaseController 

Если это не вариант вам может понадобиться, чтобы переместить этот общий метод для третьего класса, используемого обоими контроллерами.

+0

Спасибо, но я просто понял, что я не пересылаются на [HttpPost] действие при нажатии на кнопку Register. При нажатии кнопки регистрации он по-прежнему перенаправляет меня на действие [HttpGet]. может потребоваться как новый qusetion. – Cybercop

+0

ummm Как показать сообщение об успешном завершении, если я верну что-то вроде этого, возвращаю RedirectToAction («Index», «Home») в мой метод [httpPost]. мой просмотр в реестре использует _BootstrapLayout.empty.cshtml как Layout – Cybercop

1
  1. Сделать PortalController наследоваться от BootstrapBaseController
  2. Перед возвращением View позвонить Sucess и установить сообщение
  3. На ваш взгляд _layout.cshtml (и я предполагаю, что все ваши взгляды унаследовать использовать этот макет) проверить, что переменной температуры и отображения ваше сообщение

Обновленный метод управления:

[HttpPost] 
public ActionResult Register(RegisterModel user) 
{ 
    if (ModelState.IsValid && (user.Password == user.ConfirmPassword)) 
    { 
     var regUser = _db.Users.Create(); 

     regUser.UserName = user.UserName; 
     regUser.Password = user.Password; 

     _db.Users.Add(regUser); 
     _db.SaveChanges(); 
    } 
    Success("User Created successfully"); 

    return View(); 
} 

_Layout.cshtml

@if (TempData["VariableName"] != null) 
    { 
     <div>@TempData["VariableName"]</div> 
    } 
+0

На самом деле я использую другой макет, но я решил, что не буду обращать внимание на '[httpPost]' при нажатии кнопки 'register'. Итак, после того, как я исправлю это, я попробую то, что вы упомянули. – Cybercop

+0

ummm Как показать сообщение об успешном завершении, если я верну что-то вроде этого? Return RedirectToAction («Index», «Home») 'my register view использует' _BootstrapLayout.empty. cshtml' как Layout – Cybercop

+0

Просто поместите код, который проверяет свойство TempData на макете. TempData будет доступен и передан в новое действие – amhed

Смежные вопросы