【问题标题】:Render view using different model使用不同的模型渲染视图
【发布时间】:2023-03-11 19:25:01
【问题描述】:

我在另一个视图中渲染视图时遇到了一个简单的问题。请帮忙 我有一个控制器和一个视图,使用单独的模型渲染 dhtmlx 调度程序(模型来自 dll)

我需要在同一视图下放置一个使用单独模型的列表框。我知道一个视图仅限于一个模型。所以我很困惑如何将我的列表框放在调度程序的同一个视图中。 这是我的代码:

调度器控制器.cs

Public Actionresult Index()
{

  var scheduler = new DHXScheduler();
...
code
...
return view(scheduler);

}

索引.cshtml

我把_notes放在了位置

Views/Scheduler/_notes



     <div id="dailynotesview">
              @*  @Url.Action("_notes","Scheduler");*@
              @*  @{Html.Partial("_notes","Scheduler");}*@
  @* @Html.Partial("../Shared/_Dailynote") *@
       @{Html.RenderAction("_notes","Scheduler");}
             </div>


     @Html.Raw(Model.GenerateLinks())

我尝试在视图中使用上述方法将列表框放在同一页面中,但出现如下错误。 当我使用@Html.Partial("../Shared/_notes") 传入字典的模型项是“System.String”类型的,但该字典需要一个“Proj.Models.DashboardModel”类型的模型项。

  @Url.Action("_notes","Scheduler");  
    @{Html.RenderAction("_notes","Scheduler");}

我没有收到任何错误,我也没有看到呈现的列表框。我也检查了检查元素。

【问题讨论】:

    标签: asp.net-mvc listboxitem asp.net-mvc-partialview dhtmlx-scheduler


    【解决方案1】:

    您可以在主模型中添加List,如下所示,

    public class ModelA
    {
        // Model B Properties
    
        public IEnumerable<SelectListItem> YourList { get; set; }
    }
    

    那么在你的视图中你可以按如下方式访问它

    @foreach(var item in Model.YourList )
    {
    
    }
    

    【讨论】:

    • 我的主要模型是一个 dll。我无法控制它。请帮忙
    • 那你为什么不使用 viewdata 来存储你的列表。
    • 我需要在多个地方使用此列表框,即单击按钮和选项卡菜单。如果我创建视图模型,是否可以重复使用?
    • 在这种情况下,您可以创建单独的模型,该模型将包含 GetList() 函数,该函数将为您返回列表。然后您可以从任何操作中调用此方法,并可以将结果分配给 viewdata viewdata["list"] = GetList()
    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 2021-11-07
    • 1970-01-01
    • 2012-01-03
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多