列表未出现(ASP.NET Core MVC)

问题描述 投票:0回答:1

谢谢你帮助我。抱歉描述太长...我尽量详细

这是我的

ProcessController
:

namespace MVCDemo.Controllers
{
    public class ProcessController : Controller
    {
        // GET Process
        public ViewResult List()
        {
            var processList = from p in Process.GetProcesses()
                              select p;
            ViewData.Model = processList.ToList();
            return View();
        }

        // GET Process/Details/5
        public ActionResult Details(int id)
        {
            var process = (from p in Process.GetProcesses()
                           where p.Id == id
                           select p).Single();
            return View(process);
        }
    }
}

这是我的

Details.cshtml
观点:

@this.Model.ProcessName <br />
@this.Model.Id

这是我的

List.cshtml
观点:

<div>
    <h1>List</h1>
    <ul>
        @foreach (var process in this.Model)
        {
            <li> 
                @Html.ActionLink("process.ProcessName", "Details", new { id = process.Id })
            </li>
        }
    </ul> 
</div>

我的问题是,每一行我只能看到“process.ProcessName”,而不是列表,如果我的

List.cshtml
看起来像这样:

<div>
    <h1>List</h1>
    <ul>
        @foreach (var process in this.Model)
        {
            <li>
                @process.ProcessName
            </li>
        }
    </ul>
</div>

我可以看到问题可能出在这一行

 @Html.ActionLink("process.ProcessName", "Details", new { id = process.Id })

但是我不知道如何更改

process.ProcessName
来获取列表然后我可以点击。如果我这样改变它就行不通。然后整条线都不跑了。

<div>
    <h1>List</h1>
    <ul>
        @foreach (var process in this.Model)
        {
            <li> 
                @Html.ActionLink(@process.ProcessName, "Details", new { id = process.Id })
            </li>
        }
    </ul> 
</div>
asp.net-core listview .net-core asp.net-core-mvc
1个回答
0
投票

这是因为列表存储在 VewData 对象中,而在 foreach 循环中使用 Model 对象。

以下代码似乎有效

流程控制器:

namespace MVCDemo.Controllers
{
    public class ProcessController : Controller
    {
        // GET Process
        public ViewResult List()
        {
            var processList = from p in Process.GetProcesses()
                              select p;
                              
            return View(processList.ToList());
        }

        // GET Process/Details/5
        public ActionResult Details(int id)
        {
            var process = (from p in Process.GetProcesses()
                           where p.Id == id
                           select p).Single();
            return View(process);
        }
    }
}

List.cshtml视图:

@model List<process>

<div>
    <h1>List</h1>
    <ul>
        @foreach (var process in this.Model)
        {
            <li> 
                @Html.ActionLink(process.ProcessName, "Details", new { id = process.Id })
            </li>
        }
    </ul> 
</div>
© www.soinside.com 2019 - 2024. All rights reserved.