将列表中的多个模型返回到一个视图

时间:2014-05-02 02:39:04

标签: c# sql-server asp.net-mvc restsharp

我在一个视图中返回多个模型时遇到问题。我有一个模型,其中包含其他模型的集合。因此,当我返回具有其他2的集合的模型(ProblemsVM)时,我想将其他2附加到要返回的模型,以便我可以在视图中访问它的值。非常感谢任何帮助,感谢您花时间阅读。

这是我的ProblemsVM模型和我希望包含在视图中的2个IEnumebles。返回。

public class ProblemsVM
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public int ProjectId { get; set; }

        public IEnumerable<Category> Categories { get; set; }
        public IEnumerable<Type> Types {get; set;}
    }

这是返回我要将2个模型附加到的视图的操作。现在,它通过ProjectId从API接收一个包含不同问题的表。

public ActionResult ReturnProblems()
    {
       List<ProblemsVM> dv = new List<ProblemsVM>();

       // return problems
       var requestDef = new RestRequest("problem", Method.GET);
       requestDef.AddHeader("id", userId);
       requestDef.AddHeader("key", userKey);
       requestDef.RequestFormat = DataFormat.Json;
       var responseDef = Userclient.Execute(requestDef) as RestResponse;

       List<ProblemsVM> problems = JsonConvert.DeserializeObject<List<ProblemsVM>>(responseDef.Content);
       IEnumerable<ProblemsVM> problemsToReturn = problems.Where(d => d.ProjectId == item.ProjectId);

       return View(problemsToReturn);

    }

所以我想要做的就是我在另一个应用程序中所做的事情。在这个中,当使用不在列表中的模型或IEnumerable时,它可以正常工作。我无法将此切换到上面的方法以返回问题列表。 ProbVM与其他项目中的ProblemsVM相同。

ProbVM tt = new ProbVM();
   tt.Cats = db.Categories.ToList();
   tt.Typ = db.Types.ToList();
return View(tt);

这是我存储在SQL数据库中的另外两个模型:

    public partial class Type
        {

            public int Id { get; set; }
            public int Order { get; set; }
            public string Description { get; set; }
            public int CategoryId { get; set; }

            public virtual Category Category { get; set; }
        }

    public partial class Category
    {
        public Category()
        {
            this.Types = new HashSet<Type>();
            this.Companys = new HashSet<Company>();
        }

        public int Id { get; set; }
        public string Title { get; set; }
        public int CompanyId { get; set; }

        public virtual ICollection<Company> Companys { get; set; }
        public virtual ICollection<Type> Types { get; set; }
    }

-----更新部分------

因此,当单击此按钮(位于数据表的行中)时,它会弹出一个模态:

<a href="@Url.Action("Type", "Problem", new { id = item.Id })" class="btn btn-primary btn-sm" role="button" id="launch">Type</a>

并在按钮id上“启动”在ajax中调用:

<script>
    $(function () {
        $("#type-modal").dialog({
            autoOpen: false,
            height: 600,
            width: 500,
            modal: true,
            open: function () {
                $("#accordion").accordion({ autoHeight: true });
            }
        });
        $(".launch").click(function () {
            Id.value = $(this).attr('value');
            $("#type-modal").dialog("open");
        })
    });
</script>

并且在type-modal div中我将使用Category和Type模型来使用razor(想像我在其他项目中那样使用类似的东西):

foreach (var item in Model.Cats)
        {
            @Html.Label(item.Title, new { cats = item.Title })<br/>
            foreach(var tri in Model.types)
            {
                if (item.CategoryId == tri.CategoryId)
                { 
                @Html.RadioButton(tri.Category.Title, tri.Order)
                @Html.Label(tri.Description)<br/>
                }
            }
        }

0 个答案:

没有答案