在ASP.NET MVC中动态添加视图

时间:2014-07-03 12:52:43

标签: c# asp.net asp.net-mvc razor

我最初使用MVVM为WPF开发了一个项目,该项目的好处是允许我填充我想要的视图列表。每个视图都有一个"下一个"将进入列表中下一个视图的按钮。

但是,现在我试图在ASP.NET MVC中做同样的事情。这是我第一次使用MVC,但是我有一个XML文件,我需要从中生成这个UI。这些视图是从脚本中选择的,其中的组件也是动态的 - 有时ViewA可能需要3"输入视图"嵌套在其中,有时可能需要1.

我之前使用ListBoxItemsSourceDataTemplate实现了这一目标。所以我的问题是:如何动态填充要显示的视图,以及(更重要的是)如何使用 x 控制数A和 y 对照B的数量?

1 个答案:

答案 0 :(得分:1)

首先,对项目结构进行高级概述......

<强>命名为yourprojectname

  • 控制器
    • ProductController.cs
  • 模型
    • ProductViewModel.cs
    • _ProductPartial.cshtml
    • ListProducts.cshtml

<强> ProductViewModel.cs

public class ProductViewModel
{
    public string Name { get; set; }
    public string Description { get; set; }
}

<强> ProductController.cs

public class ProductController : Controller
{
    public ActionResult Index()
    {
        // Create your model (this could be anything...)
        var model = new List<ProductViewModel>
        {
            new ProductViewModel { Name = "Apple", Description = "A red apple" },
            new ProductViewModel { Name = "Orange", Description = "An orange orange" }
        };

        // Return the main view and your model
        return View("ListProducts", model);
    }    
}

<强> _ProductPartial.cshtml

@model YourProjectName.Models.ProductViewModel

<h1>@Model.Name</h1>
<p>@Model.Description</p>

<强> ListProducts.cshtml

@model System.Collections.Generic.List<YourProjectname.Models.ProductViewModel>

@foreach (var product in Model)
{
    Html.Partial("_ProductPartial", product)
}

<强>摘要

现在,如果您请求控制器操作(localhost/Product/Index或其最终适合您),控制器将创建模型,渲染父视图,父视图将呈现尽可能多的产品部分根据我们在控制器中定义的产品模型集合,视图是必要的。视图和部分视图不需要模型,但我想您将使用某种模型类来帮助您确定要在父视图中呈现的部分视图的位置/位置/数量。这是基本的,但它应该让你开始使用部分视图。