解析控制器和部分视图之间的数据

时间:2014-07-14 09:34:27

标签: c# asp.net-mvc razor

您好我想从控制器解析数据到我的局部视图。我从数据库中获取数据并将其转换为List,并且列表字符串想要发送到部分视图,所以我可以用它来做... ...

    public ActionResult ManipulateData()
    {
        List<string> str = new List<string>();
        DataTable data = LoadDBData();

        foreach (DataRow row in data.Rows)
        {
            foreach (DataColumn Col in data.Columns)
            {
                str.Add(row[Col].ToString());
            }
        }
        return View(str);
    }

这是我一直在尝试的代码,现在如何访问局部视图中的str数据?

(第二个想法是返回List with function并以某种方式调用函数并将数据传递给视图中的变量)

1 个答案:

答案 0 :(得分:1)

您可以根据需要将数据从视图传递到视图。

说你有这个观点:

@model IEnumerable<DataLayer.StructuresList_Result>
<h2>@ViewBag.Title</h2>

@{
    Html.RenderPartial("_StructureList", Model);
}

如您所见,我有一个模型的主视图,我将该模型直接传递给局部视图。

您还可以为模型创建包装器。

public class Wrapper
{
  public string Name {get;set;}
  public IEnumerable<MyClass> SubClasses {get;set;}
}

public class SubClass
{
  //your subclass code here
}

然后以传统方式将此包装器传递给您的模型:

public ActionResult Index()
{
  //get my wrapper object
  Warpper w = new Wrapper();
  return View(w);
{

然后在父视图中使用它并将SubClass传递给partial:

@model YourProjectName.Wrapper
<h2>Model.Name</h2>

@{
   Html.RenderPartial("_StructureList", Model.SubClasses);
}

然后,您可以像访问父视图中的数据一样访问该数据。

@model IEnumerable<string>
@foreach(var item in Model)
{
 //do something with model data
}

我没有测试任何这个,但它看起来是正确的。


Chris对一件事情是正确的,这是非常基本的asp.net MVC。我建议你阅读一些MVC教程:

ASP.NET网站:http://www.asp.net/mvc

Youtube视频:https://www.youtube.com/watch?v=-pzwRwYlXMw&list=PL6n9fhu94yhVm6S8I2xd6nYz2ZORd7X2v