值不能为空。参数名为linkText。

3
我有一个类似于"asp.net MVC for professional"书中网站的项目,所以我在导航栏中遇到了问题,问题出现在视图中。
错误信息如下: 无法将空值或空字符串分配给参数"name"的对象。 参数名: linkText
@foreach (var link in Model)
  {
   @Html.RouteLink(link, new
  {
      controller = "Profile"

,

我明白链接出现了问题,但我不知道如何修复它。
以下是控制器和视图的代码。 Menu.cshtml
@model IEnumerable<string>

    @Html.ActionLink("List", "Profile")
    @foreach (var link in Model)
    {
        @Html.RouteLink(link, new
    {
        controller = "Profile",
        action = "List",
        category = link,
        page = 1
    })
    }

NavController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using HoboAnimal.Domain.Abstract;


namespace HoboAnimal.WebUI.Controllers
{
    public class NavController : Controller
    {
        private IProfileRepository repository;
        public NavController(IProfileRepository repo)
        {
            repository= repo;
        }
        public PartialViewResult Menu(){ 

            IEnumerable<string> categories = repository.Profiles.
                Select(x => x.Category).
                Distinct().
                OrderBy(x => x);
            return PartialView(categories);
        }
    }
}

排版

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    <link href="~/Content/Site.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <div id="header">

    </div>
    <div id="categories">
        @{Html.Action("Menu","Nav");}
    </div>
    <div id="content">
        @RenderBody()
    </div>
</body>
</html>

谢谢您


linkText 控制器/元素的标记在哪里? - Hanlet Escaño
1
添加了Layout.cshtml。 - Vitalij Mescheryakov
你有没有遇到任何异常的具体代码行? - Hanlet Escaño
应该是 @{ Html.RenderAction("Menu", "Nav"); }(或者 @Html.Action("Menu", "Nav") - user3559349
我尝试过了。我想我需要更改 RouteLink 并添加一些内容。 - Vitalij Mescheryakov
显示剩余7条评论
2个回答

3

由于linkText是ActionLink和RouteLink的第一个参数,这意味着您的Model中有1个或多个"link"为空字符串。在创建链接之前,请先检查它:

@foreach (var link in Model)
{
  if(!String.IsNullOrEmpty(link.toString())
  {
    @Html.RouteLink(link, new
    {
        controller = "Profile",
        action = "List",
        category = link,
        page = 1
    })
  }
}

或者从选择中删除空行:

IEnumerable<string> categories = repository.Profiles.
                Select(x => x.Category).
                Distinct().
                Where(x => !String.IsNullOrEmpty(x)).
                OrderBy(x => x);

1

这个错误:

值不能为 null 或空。参数名: linkText

只是说明在 ActionLink 方法中需要 linkText 参数(它不能为null或空)。

例如,您可以这样编写:

 @Html.ActionLink(" ","List", "Profile")

它应该会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接