【问题标题】:Value cannot be null or empty. Parameter name linkText值不能为 null 或空。参数名称链接文本
【发布时间】:2016-08-25 07:13:36
【问题描述】:

我在“asp.net MVC for Professional”一书中有一个类似的项目, 所以我的导航栏有问题,问题正在考虑中。

错误的文本是: 值不能为 null 或空。 Имя параметра: 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
    })
    }

导航控制器

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 控制器/元素的标记在哪里?
  • 添加了 Layout.cshtml
  • 您遇到异常的任何特定行?
  • @Html.RouteLink(link, new
  • 我猜是模型视图的问题,但我无法修复(

标签: c# asp.net asp.net-mvc


【解决方案1】:

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

@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);

【讨论】:

    【解决方案2】:

    这个错误:

    值不能为空或空。 Имя параметра: linkText

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

    例如你可以这样写:

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

    应该有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-17
      相关资源
      最近更新 更多