Html ActionLink ошибка времени выполнения: «Значение не может быть нулевым или пустым. но значение не является нулевым или пустым - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь использовать @Html.ActionLink для кликабельной ссылки в моем представлении, однако я получаю исключение времени выполнения:

System.ArgumentException: 'Значение не может быть нулевым или пустым. Имя параметра: linkText

Первый параметр Html.ActionLink равен linkText, и, как вы можете видеть из моего кода ниже, он действительно не нулевой или не пустой.

                    @foreach (var o in Model.Results)
                    {
                        <tr>
                            <td>@Html.ActionLink(o.Person.FirstName, "Detail", "Player", new { selectedPlayerID = o.Person.IDPerson, referringController = "ValidationHistory" }, null)</td>
                            <td>@o.Person.FirstName</td>
                            <td>@o.Person.LastName</td>
                            <td>@o.Person.SocialSecurityNumber</td>

Ниже приведен снимок экрана страницы, вверху я добавил @ (string.IsNullOrWhiteSpace (o.Person.FirstName)? "Null / ws": o.Person.FirstName) как видите, он действительно не нулевой или не пустой.

enter image description here

Для каждого запроса ниже приведена вся часть файла cshtml, относящаяся к этой проблеме.

<div class="col-md-10 text-center">
    @if (Model.Results.Count == 0)
    {
        <h3>No Data to Display</h3>
        <h3>Please Try Different Search Parameters</h3>
    }
    else
    {
        <div id="tablecontaner" class="col-md-10 text-left">
            <table id="PVSearchReport" class="table table-striped table-bordered" style="width:100%;padding:10px">
                <thead>
                    <tr>

                        <th>First Name</th>
                        <th>Last Name</th>
                        <th>SSN</th>
                        <th>IRS / TIN</th>
                        <th>DMF Details</th>
                        <th>List Matches</th>
                        <th>Executed At</th>
                        <th>Executed By</th>
                        <th>Club ID</th>
                        <th>Lists</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach (var o in Model.Results)
                    {
                        <tr>
                            <td>@Html.ActionLink(o.Person.FirstName, "Detail", "Player", new { selectedPlayerID = o.Person.IDPerson, referringController = "ValidationHistory" }, null)</td>
                            <td>@o.Person.FirstName</td>
                            <td>@o.Person.LastName</td>
                            <td>@o.Person.SocialSecurityNumber</td>

                            <td>@o.Validation_Results.IRSOk</td><!--IRS/TIN-->
                            <td>@o.Validation_Results.DMFOk</td><!--DMF Details-->
                            <td>@o.Validation_Results.ListOk</td><!--List Matches-->
                            <td>@o.Validation_Results.ExecutedAt<!--Executed At-->
                            <td>@o.Validation_Results.ExecutedBy</td><!--Executed By-->
                            <td>@o.Person.ClubID</td>
                            <td>@o.ListMatches</td>
                        </tr>
                    }
                </tbody>        
            </table>
        </div>
    }
</div>

Ответы [ 4 ]

1 голос
/ 29 апреля 2019
  1. Первая проверка Модель Ноль или нет, Затем после проверки o.Person.FirstName пусто или нет.

            ## Check Model Like: ##
    
             - @if(Model != null && Model.Count() != 0)
                {
                  foreach (var o in Model.Results)
                  {
                    ---------
                  }
                }
            ## Check Record Like: ##
            if(o.Person!=null)
            {
             -----------
            }
    
1 голос
/ 24 апреля 2019

Я пытался воспроизвести его.Вам необходимо проверить нулевое значение перед использованием o?.Person?.FirstName и o?.Person?.IDPerson Если C # 5, вы можете использовать o.Person.FirstName != null ? o.Person.FirstName : "Default Value" Этот код работал

  <td>@Html.ActionLink(o?.Person?.FirstName, "Detail", "Player", 
new { selectedPlayerID = o?.Person?.IDPerson, referringController = "ValidationHistory" }, null)</td>
0 голосов
/ 29 апреля 2019

Видите, вам нужно сначала проверить в цикле o.Person этот объект 'Person' равен нулю или нет, а другой находится внутри объекта Person FirstName равен нулю или нет, вы можете обработать его следующим образом:

 if(o.Person!=null)
    {
        @Html.ActionLink(o.Person.FirstName ?? "Not Found", "Detail", "Player", new { selectedPlayerID = o.Person.IDPerson, referringController = "ValidationHistory" }, null)
    }
0 голосов
/ 24 апреля 2019

Я ошибся в своем первоначальном посте. Было возвращено несколько пустых строк.

Решить:

                        @if (o.Person.FirstName == null || o.Person.FirstName == "" || o.Person.FirstName == "NOT")
                        {
                            <td>Not Found</td>
                        }
                        else
                        {
                            <td>@Html.ActionLink(o.Person.FirstName, "Detail", "Player", new { selectedPlayerID = o.Person.IDPerson, referringController = "ValidationHistory" }, null)</td>
                        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...