ASP.NET Core MVC进程列表无法显示可点击进程名问题求助
问题:ActionLink无法显示实际进程名称
相关代码
ProcessController.cs
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",而非实际进程名称。若直接输出@process.ProcessName能正确显示名称,但无法生成可点击链接。尝试写成@Html.ActionLink(@process.ProcessName, "Details", new { id = process.Id })时代码无法运行,需获取正确写法。
解决方案
问题核心是你将process.ProcessName用双引号包裹,导致它被当作字符串字面量输出。正确写法是直接传入变量,不需要加引号,也无需额外的@符号——因为@Html.ActionLink()内部已处于Razor代码上下文。
修改后的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>
说明
Html.ActionLink的第一个参数是链接显示文本,需传入实际变量值,而非字符串字面量。- 写
"process.ProcessName"时,Razor会直接输出这个字符串,不会解析变量。 - 在
@Html.ActionLink()的括号内属于C#代码环境,直接写process.ProcessName即可,额外加@会引发语法错误。
内容的提问来源于stack exchange,提问作者Mirian
相关产品推荐
相关产品推荐

