在_Layout中显示模型并在.NET Core 2 +

时间:2018-08-30 15:57:55

标签: c# .net .net-core asp.net-core-2.0 dotnet-core-pack

首次发布。

我对编程还很陌生,我正在尝试创建一个网站来容纳我构建的Web应用程序。我目前有一个模型,视图和控制器来投影我的Apps表的内容。这些应用托管在其他位置,因此下面屏幕截图中显示的图块仅链接到其他位置。我想提供一种在抽屉中显示最近使用过的应用程序的方法(代码存储在_Layout中)。

_布局抽屉:

_Layout Drawer

我想首先在_Layout抽屉中显示任何模型数据。如果我只是将Apps View代码扔到_Layout中,就像这样:

@_Layout, located beneath navbar code and above RenderBody()@
@model IEnumerable<Apps>
<div id="footerSlideContainer">
    <div id="footerSlideButton"></div>
    <div id="footerSlideContent">
        <div id="footerSlideText">

            <div class="parenttile">

                @foreach (var Apps in Model)
                {
                    <a href="http://@Apps.AppLink" target="_blank">
                        <div class="tile">
                            <div></div>
                            <div class="tilemid">
                                <div></div>
                                <div>
                                    <img class="tileimage" src="@Apps.AppImage" alt="@Apps.AppName" />
                                </div>
                                <div></div>
                            </div>
                            <div class="tilebot">
                                @Apps.AppName
                            </div>
                        </div>
                    </a>
                }
            </div>
            <h3>Recently Used Apps</h3>
            <p>This section will store all of your most recently used apps. It stays on the screen until you click the drawer icon.</p>
        </div>
    </div>
</div>

...我在@foreach行的Debug中收到以下错误:NullReferenceException:对象引用未设置为对象的实例。 .net核心。我在这里研究了该错误:What is a NullException error and how do I fix it?

  1. 我知道在显示模型之前会先执行操作方法。如果我 使用上面的代码,我想我需要注入 该模型放入action方法中-但是_layout是否有一个 控制器?
  2. 我在这里进行了研究:ASP MVC Razor Pass model to view 。这个 看起来是最接近的解决方案,但希望有人 引导我通过它。
  3. 最后,我注意到我可以使用ViewComponent ViewComponent in ASP.NET Core。我可以使用一些帮助实施此解决方案。

其中哪些解决方案最有效?

然后就是创建收藏夹的问题。我认为这更加直接,因为此Display recently viewed items包含了我认为我需要的所有信息。

感谢您的帮助-我在下面包括我的模型和控制器代码:

型号:

    public class Apps
{

    public int AppID { get; set; }
    public string AppName { get; set; }
    public string AdGroup { get; set; }
    public string AppDescription { get; set; }
    public string AppLink { get; set; }
    public string AppImage { get; set; }

}

控制器(在我移至数据库之前,现在使用硬编码的虚拟数据)

public class AppsController : Controller
{
    private List<Apps> _apps;

    public AppsController()
    {
        _apps = new List<Apps>();

        //creating test Apps model 
        _apps.Add(new Apps
        {
            AppID = 1,
            AppName = "Test App 1",
            AdGroup = "Group 1",
            AppDescription = "First test app.",
            AppLink = "www.google.com",
            AppImage = "/images/image1.png"

        }); //et al
    }


    public IActionResult Index()
    {
        return View(_apps);
    }
}

0 个答案:

没有答案