我有一个基本控制器类,我想将一个消息从Base类传递给所有控制器,并且该消息可供所有视图使用。
我在下面创建了一个基本版本......
部门控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Website.Controllers
{
public class SectionController : Controller
{
//
// GET: /Section/
public ActionResult Section()
{
ViewData["Message"] = "THIS IS A TEST";
return View();
}
}
}
家庭控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Website.Controllers
{
public class HomeController : SectionController
{
public ActionResult Index()
{
return View();
}
}
}
查看
<%= Html.Encode(ViewData["Message"]) %>
我知道我可以在家庭控制器中执行此操作,但我只是在测试。
我没有上述任何错误,但我也没有在我的视图中显示消息?
我正在使用本教程http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx好的解决方案部分,如果有帮助的话。
认为我现在已经使用了以下代码在我的sectionController ...
namespace Website.Controllers
{
public class SectionController : Controller
{
//
// GET: /Section/
public SectionController()
{
ViewData["Message"] = "THIS IS A TEST";
//return View();
}
}
}
这是一个好的解决方案吗?
答案 0 :(得分:0)
HomeController.Index没有调用SectionController.Section。
答案 1 :(得分:0)
您是在基本控制器的ViewData
操作方法中设置Section
,是否真的想在基本控制器的构造函数中设置它?
public SectionController()
{
ViewData["Message"] = "THIS IS A TEST";
}
答案 2 :(得分:0)
因为没有任何请求被映射到SectionController中的动作“Section”。如果你映射了一个像domain / Section / Section这样的请求,你会在视图中看到你的消息(假设你使用的是默认路由并且有一个名为“Section”的视图)。
您需要做的是,将消息放入每次运行操作时运行的方法的viewdata中。您可以在OnActionExecuting中执行此操作,如:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
ViewData["Message"] = "THIS IS A TEST";
base.OnActionExecuting(filterContext);
}
SectionController中的。