一个控制器的MVC4访问方法到另一个

时间:2013-05-31 12:20:12

标签: asp.net-mvc asp.net-mvc-4 twitter-bootstrap

我在BootstrapBaseController.cs中有一些内置方法,如

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();
        }

2 个答案:

答案 0 :(得分:0)

您需要从PortalController继承BootstrapBaseController

public class PortalController : BootstrapBaseController

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

答案 1 :(得分:0)

  1. 使PortalController继承自BootstrapBaseController
  2. 在返回View call Sucess并设置消息
  3. 之前
  4. 在您的_layout.cshtml视图上(我假设您的所有视图都继承使用此布局)检查该临时变量并显示您的消息
  5. 更新了控制器方法:

    [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>
        }