0

这是视图:

@model tgpwebged.Models.sistema_DocType
 ...

此模型是与 textBoxFor 和其他 html 助手一起使用的实体

这是控制器。

public ActionResult AdminSettingAddTipo()
{
    IEnumerable<string> indices;

    using (tgpwebgedEntities context = new tgpwebgedEntities())
    {
        var obj = from u in context.sistema_Indexes select u.idName;
         indices = obj.ToList();
    }

    return PartialView(indices);
}

我在这里有我需要的一切,我正在使用一个模型来创建视图,所以我不允许将“索引”作为模型发送,因为一个视图中不允许有 2 个模型。

我现在不想使用“Tupe”作为父视图。我只想知道如何将我的 IEnumerable 发送到视图的最佳方式。

我正在考虑将 ViewBag 作为最后一个选项,但我正在避免使用 ViewBag。

谢谢

4

3 回答 3

2

ViewBag 不是一个好的选择。使用您的列表和当前模型创建 ViewModel:

    public class YourViewModel
    {

        public sistema_DocType Type { get; set; }
        public IEnumerable<string> Indices {get;set;}
    }

希望,它会有所帮助。

于 2012-12-04T14:10:08.087 回答
1

如果您出于某种原因不想使用 ViewBag,则可以专门为视图创建一个模型,其中包含来自旧模型的信息和所需的新索引。这是 MVC 开发中的常见模式。您甚至可以让 ViewModel 成为当前模型的装饰器。

http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx

于 2012-12-04T14:09:00.350 回答
0

尽可能使用强定义,将其应用于模型并发送该模型:

模型

public class MyModel{
     public List<sistema_Indexes> indecies {get;set;}

}

控制器

MyModel model = new MyModel();
model.indecies = context.sistema_Indexes.Select(u=> u.idName).ToList();
于 2012-12-04T14:08:07.443 回答