Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 从局部视图填充列表数据_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 从局部视图填充列表数据

Asp.net mvc 从局部视图填充列表数据,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我是ASP.NET MVC新手,我有一个带有组合框的局部视图,需要动态填充 我的理解是,我可以将列表数据放在视图的ViewBag中,并且可以从我的局部视图中使用它 但是,我希望能够从几个不同的页面使用部分视图。所有使用局部视图的页面都必须使用列表数据填充ViewBag吗?有没有办法将其封装到我的局部视图中?您应该使用 @Html.Partial("", yourData) 并在局部视图中使用 @ViewData.Model 看看这个问题:。可能您应该创建一个包含列表数据的基本

我是ASP.NET MVC新手,我有一个带有组合框的局部视图,需要动态填充

我的理解是,我可以将列表数据放在视图的ViewBag中,并且可以从我的局部视图中使用它


但是,我希望能够从几个不同的页面使用部分视图。所有使用局部视图的页面都必须使用列表数据填充ViewBag吗?有没有办法将其封装到我的局部视图中?

您应该使用

    @Html.Partial("", yourData)
并在局部视图中使用

    @ViewData.Model
看看这个问题:。可能您应该创建一个包含列表数据的基本视图模型,并(如果需要)从中继承其他视图模型

例如:

    class ViewModelWithFooList
    {
        public List<Foo> FooList
        {
            get { return new List<Foo>() { new Foo("one"), new Foo("two"), new Foo("three") }; }
        }
    }
在你看来:

    @Html.RenderPartial("FooList", Model.FooList);

视图和部分视图“傻瓜”必须为强类型。

您可以使用子操作来实现此目的

在控制器中执行一个操作,该操作仅设置ViewBag并返回组合框部分视图

e、 g

然后,任何需要使用该下拉列表的视图都会将其作为子操作呈现

e、 g


但我从哪里做这件事呢?从每个使用局部视图的页面?是。当然,如果ViewData.Model为空,您可以定义“默认值”。但是,用我的答案,是正确的方法。谢谢。这是一个项目列表,不能有默认值。但我感到困扰的是,我不能将这种逻辑封装在局部视图中。如果我从十几个视图中使用它,那么我需要添加代码来提供十二个地方的列表。如果总是有相同的数据,请考虑使用保存数据的静态类。您可以从您的partial中访问它们,而无需将其传入。因此,不建议使用ViewBag。ViewBag是动态的。数据将来自数据库,但并不总是相同的。但是,我可以在这里将其包含在一个静态类中。谢谢这里的结构让我有点困扰。我从来没有用过,但我想你也可以试试。
    @Html.RenderPartial("FooList", Model.FooList);
 [ChildActionOnly]
 public ActionResult MyDropDown()
 {
     ViewBag.DropDown = blah;
     return PartialView();
 }
@{ Html.RenderAction("MyDropDown", "MyController"); }