у меня проблема с @html.actionlink, не работающим в mvc

#c# #asp.net-mvc #html-helper

#c# #asp.net-mvc #html-помощник

Вопрос:

У меня проблема с функцией @html.actionlink , и вот мой пример кода и ошибка

ошибка:

Майкрософт.Хостинг.Время жизни: Информация: приложение запущено. Нажмите Ctrl C, чтобы завершить работу.
Microsoft.Хостинг.Срок службы: Информация: Среда размещения: Разработка
Microsoft.Хостинг.Время жизни: Информация: корневой путь содержимого: C:UsersturkisourcereposVidlyVidly
Программа ‘[1084] iisexpress.exe ‘вышел с кодом -1073741819 (0xc0000005) ‘Нарушение доступа’.

Случайный код просмотра

 @model Vidly.ViewModel.RandomMovieViewModel
@{
    ViewData["Title"] = "Random";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@*
    this is comment :)
*@

<h1>Customers</h1>

<table class="table table-bordered table-hover">
    <thead>
        <tr>
            <th scope="col">Customer</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var customer in Model.Customer)
        {
            <tr class ="d-sm-table-row">
                <td>@Html.ActionLink(@customer.Name,"CustomerPage","Movie",null,null)</td>
            </tr>
        }
    </tbody>
</table>
 

Код контроллера видео

 using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Vidly.Models;
using Vidly.ViewModel;

namespace Vidly.Controllers
{
    public class MovieController : Controller
    {
        public IActionResult Random()
        {
            var movie = new Movie() { Name = "See" };
            var customers = new List<Customer>
            {
                new Customer {Name = "turki" },
                new Customer {Name = "ahmed" }
            };
            var ViewModel = new RandomMovieViewModel()
            {
                movie = movie,
                Customer = customers
            };
            return View(ViewModel);
        }
       
        public ActionResult CustomerPage()
        {
            return CustomerPage();
        }
    }
}
 

Комментарии:

1. К вашему сведению — вам не нужен @ префикс внутри списка параметров ActionLink.

Ответ №1:

У вас ошибка рекурсии:

  public ActionResult CustomerPage()
        {
            return CustomerPage();
        }
 

Действие вызывает себя без остановки, пока не произойдет исключение. И из вашего вопроса неясно, что вы хотите вернуть в качестве страницы клиента.

Это должно быть что-то вроде этого:

 
public ActionResult CustomerPage()
  {
var model = ....your code
 return View(model);
 }

 

Комментарии:

1. спасибо, вы правы, у меня ошибка рекурсии, и я ее исправляю 🙂

2. Я рад, что помог вам. Пожалуйста, не забудьте принять ответ.