Как передать данные переменных из контроллера в представление (MVC) - PullRequest
2 голосов
/ 20 апреля 2020

В настоящее время я определил несколько переменных в моей модели, которые затем назначил значения в соответствующем контроллере. Затем я хочу, чтобы эти присвоенные значения использовались переменными в моем представлении, однако я не уверен в том, что мне нужно сделать, чтобы добиться этого ...

Ниже приведена модель моего класса;

 public class Category
    {
       public string result { get; set; }

       public Array userData { get; set; }

    }

И затем контроллер, в котором я присвоил значения вышеуказанным объявленным переменным;

 [HttpPost]
        public ActionResult ReadCategory()
        {
            var dataFile = Server.MapPath("~/App_Data/Category.txt");

            Category passCategory = new Category
            {
                result = "",
                delimiterChar = { ',' },
                userData = System.IO.File.ReadAllLines(dataFile)
            };

            return View(passCategory);
        }

И, наконец, я хочу использовать присвоенные выше переменные в моем представлении .. Хотя для по какой-то причине переменные приводят к ошибке «Имя variableName не существует в текущем контексте».

Просмотр кода следующим образом:

 @using (Html.BeginForm("ReadCategory", "Index", FormMethod.Post))
    {
        <div class="categoryList">

            @result
            @if (result == "")
            {
                foreach (String dataLine in userData)
                {

                    <p>
                        <a data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">

                            @dataLine.Split(delimiterChar)[0]
                        </a>

                        <button class="btn" id="@dataLine.Split(delimiterChar)[1]"><i class="fas fa-plus secondaryPlusIcon" id="@dataLine.Split(delimiterChar)[1]"></i></button>
                        <button class="btn" id="@dataLine.Split(delimiterChar)[1]"><i class="far fa-edit secondaryEditIcon" id="@dataLine.Split(delimiterChar)[1]"></i></button>
                        <button class="btn" id="@dataLine.Split(delimiterChar)[1]"><i class="far fa-trash-alt secondaryDeleteIcon" id="@dataLine.Split(delimiterChar)[1]"></i></button>
                    </p>

                    <div class="collapse" id="collapseExample">
                        <div class="card card-body w-25 p-3 collapsible">
                            @dataLine.Split(delimiterChar)[1] / Sub-category <!-- The ID value (Value after the delimiter) This ID value is associated to each category listed above-->
                        </div>
                    </div>

                }

            }
        </div>
    }

(Большая часть кода в представлении не нужна, однако я хотел бы сосредоточиться конкретно на переменных: «result», «userData» и "delimiterChar") ~ Эти переменные выдают ошибку, описанную выше.

ПРИМЕЧАНИЕ. В настоящее время я использую пространства имен в представлении;

@ с использованием projectName.Models

@ model IEnumerable

Я явно что-то здесь упускаю, я чрезвычайно новичок в MVC, и любое руководство по решению этой проблемы будет с благодарностью, спасибо:)

1 Ответ

4 голосов
/ 20 апреля 2020

Установите Category (при необходимости используйте правильное пространство имен) в качестве модели, используя директиву страницы

@model Category

, затем вместо использования result вы должны использовать как Model.result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...