这是一个典型的场景,每个应用模型都继承一个基类。这个基类包含一些属性,这些属性在以查询字符串形式出现的不同参数上表现不同。
我希望有一个集中的机制来处理这种情况,比如当控制器返回一个视图时,我捕获模型并提供属性中的值。
是否可以?
这是一个典型的场景,每个应用模型都继承一个基类。这个基类包含一些属性,这些属性在以查询字符串形式出现的不同参数上表现不同。
我希望有一个集中的机制来处理这种情况,比如当控制器返回一个视图时,我捕获模型并提供属性中的值。
是否可以?
哇,很开放的问题。如果您只想计算/获取一些额外信息以显示在特定视图中,您可以在控制器中使用ViewBag对象。
ViewBag.Greeting = "Welcome, " + User.FirstName;
然后,在您的 Razor 代码中,您可以通过@ViewBag.Greeting
(或<%=ViewBag.Greeting%>
在 ASPX 中)访问它。ViewBag 继承自 ASP.NET 的ViewData对象,该对象(有效地)是动态类型的,并且将接受您扔给它的任何对象结构。简而言之,非常强大,易于使用,但可能会导致运行时出现问题,而其他方法会在编译时遇到问题。
当然,您可能会遇到问题,即您的类(或数据源)中的数据的格式不适合您的 View 使用。这在开发与现有生态系统交互的应用程序时非常常见(即您将编写的大部分代码)。在这种情况下,视图模型是你的朋友:http ://en.wikipedia.org/wiki/View_model
In addition to the /Models folder in your project, create a /ViewModels namespace and match these to your views. So, for your /Views/Product/Details.cshtml you create a /ViewModels/Product/Details.cs class and either pass in the id (or the model) as an argument. Make using you add a using MyProject.ViewModels
in your controller though!
您可以制作自己的 CustomActionResult 类。像这样的东西:
public class CustomActionResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
// your logic here
}
}
public ActionResult YourAction()
{
return new CustomActionResult (viewModel);
}