这是一个典型的场景,每个应用程序模型都继承了一个基类。此基类包含一些属性,这些属性在查询字符串形式的不同参数上表现不同。
我希望有一个集中的机制来处理场景,比如当控制器返回一个视图时我抓住模型并在属性中提供值。
有可能吗?
答案 0 :(得分:1)
ViewBag.Greeting = "Welcome, " + User.FirstName;
然后,在您的Razor代码中,您可以通过@ViewBag.Greeting
(或ASPX中的<%=ViewBag.Greeting%>
)访问此代码。 ViewBag继承自ASP.NET的 ViewData 对象,该对象(有效地)动态地键入并接受您抛出的任何对象结构。简而言之,非常强大,易于使用,但在运行时可能会导致其他方法在编译时遇到的问题。
当然,您可能会遇到类(或数据源)中的数据格式不正确而无法使用View的问题。这在开发与现有生态系统接口的应用程序(即您将要编写的大部分代码)时非常常见。在这种情况下,查看模型是您的朋友:http://en.wikipedia.org/wiki/View_model
除项目中的 / Models 文件夹外,还要创建 / ViewModels 命名空间,并将这些命名空间与您的视图相匹配。因此,对于 /Views/Product/Details.cshtml ,您可以创建 /ViewModels/Product/Details.cs 类,并将id(或模型)传入一个论点。使用你在你的控制器中添加using MyProject.ViewModels
吧!
答案 1 :(得分:0)
您可以创建自己的Custom ActionResult类。像这样:
public class CustomActionResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
// your logic here
}
}
public ActionResult YourAction()
{
return new CustomActionResult (viewModel);
}