Dar*_*Zon 3 c# asp.net asp.net-mvc razor asp.net-mvc-4
我正在学习ASP.NET MVC4,这是我在Web开发方面的第一次经历.
我正在处理一个情况.在我的一个控制器中,我正在返回IEnumerable<BaseClass>视图.
public class TestController : Controller
{
public ActionResult Index()
{
return View(Models);
}
// this static method is just for demo
static List<BaseModel> Models()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
想象一下,我们在BaseModels中有6个具体的类.
public class ConcreteModel1 : BaseModel { .. } // Must show view1
public class ConcreteModel2 : BaseModel { .. } // Must show view2
public class ConcreteModel3 : BaseModel { .. } // and so on..
public class ConcreteModel4 : BaseModel { .. }
public class ConcreteModel5 : BaseModel { .. }
public class ConcreteModel6 : BaseModel { .. }
Run Code Online (Sandbox Code Playgroud)
当我想显示数据时,每个ConcrenteModel都有自己的数据View.如下图所示.

我怎么能做到这一点?如果我不是很清楚,请告诉我,谢谢.
这是一个完整的解决方案:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplication1.Models
{
public abstract class BaseModel
{
public string Content { get; set; }
}
public class ConcreteModel1 : BaseModel { }
public class ConcreteModel2 : BaseModel { }
public class ConcreteModel3 : BaseModel { }
}
Run Code Online (Sandbox Code Playgroud)
@model System.Collections.Generic.List<MvcApplication1.Models.BaseModel>
@{
ViewBag.Title = "CompositeView";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
CompositeView</h2>
@foreach (var model in Model)
{
Html.RenderPartial(string.Format("_{0}", model.GetType().Name), model);
}
Run Code Online (Sandbox Code Playgroud)
@model MvcApplication1.Models.ConcreteModel1
<h1>Concrete Model 1</h1>
@Model.Content
Run Code Online (Sandbox Code Playgroud)
@model MvcApplication1.Models.ConcreteModel2
<h1>Concrete Model 2</h1>
@Model.Content
Run Code Online (Sandbox Code Playgroud)
@model MvcApplication1.Models.ConcreteModel3
<h1>Concrete Model 3</h1>
@Model.Content
Run Code Online (Sandbox Code Playgroud)
public ActionResult CompositeView()
{
List<BaseModel> model = new List<BaseModel>();
model.Add(new ConcreteModel1() { Content = "This is model 1." });
model.Add(new ConcreteModel2() { Content = "This is model 2." });
model.Add(new ConcreteModel3() { Content = "This is model 3." });
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1467 次 |
| 最近记录: |