2013-05-31 35 views
0

我在BootstrapBaseController.csMVC4访问一个控制器的方法将其他

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

你需要从BootstrapBaseController使PortalController继承。

public class PortalController : BootstrapBaseController 

如果这不是一个选项,您可能需要将该常用方法移至由两个控制器使用的第三个类。

+0

谢谢,但我只是意识到我没有被转发到[HttpPost]行动时,按下注册按钮。在点击注册按钮时,它仍然会将我转到[HttpGet]操作。可能需要作为新的想法。 – Cybercop

+0

ummm如果我返回像这样的返回RedirectToAction(“Index”,“Home”)到我的[httpPost] metod,我该如何显示成功消息。我的注册视图使用_BootstrapLayout.empty.cshtml作为布局 – Cybercop

1
  1. 让PortalController从BootstrapBaseController
  2. 继承返回查看通话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]''注销''按钮点击'注册'视图。所以,在我解决这个问题之后,我会尝试你提到的 – Cybercop

+0

ummm如果我返回像这样的返回类似的东西,我该如何显示成功消息?我的注册视图使用_BootstrapLayout.empty。 cshtml'作为布局 – Cybercop

+0

只需在代码中检查布局上的TempData属性即可。 TempData将可用并传递给新的操作 – amhed