gpt4 book ai didi

c# - 如何在 ASP.NET MVC4 中渲染特定模型的 View ?

转载 作者:行者123 更新时间:2023-11-30 13:59:12 24 4
gpt4 key购买 nike

我正在学习 ASP.NET MVC4,这是我第一次体验 Web 开发。

我正在处理一个情况。在我的一个 Controller 中,我返回了一个 IEnumerable<BaseClass>到 View 。

public class TestController : Controller
{
public ActionResult Index()
{
return View(Models);
}

// this static method is just for demo
static List<BaseModel> Models()
{
...
}
}

现在想象一下,我们在 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 { .. }

当我想显示数据时,每个ConcrenteModel有自己的View .如下图所示。

enter image description here

我怎样才能做到这一点?如果我不是很清楚,请告诉我谢谢。

最佳答案

这是一个完整的解决方案:

模型

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

复合 View

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

具体观点

_ConcreteModel1.cshtml

@model MvcApplication1.Models.ConcreteModel1

<h1>Concrete Model 1</h1>
@Model.Content

_ConcreteModel2.cshtml

@model MvcApplication1.Models.ConcreteModel2

<h1>Concrete Model 2</h1>
@Model.Content

_ConcreteModel3.cshtml

@model MvcApplication1.Models.ConcreteModel3

<h1>Concrete Model 3</h1>
@Model.Content

Controller

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

关于c# - 如何在 ASP.NET MVC4 中渲染特定模型的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com