Привязка переключателя на странице бритвы

У меня есть следующие переключатели на моей странице Razor:

<div class = "form-group row">
                    <div class = "col">
                        <input asp-for = "CodingLookup.CodingOption" type = "radio" name = "tele" value = "tele0" />
                        <label for = "tele0">Not coding.</label>
                    </div>
                </div>

                <div class = "form-group row">
                    <div class = "col">
                        <input asp-for = "@Model.CodingLookup.CodingChangesNotRequired" type = "radio" name = "tele" value = "tele1" />
                        <label for = "tele1">I have reviewed* my 2021/2022 coding forms and will not be requesting any changes for 2022/2023.</label>
                    </div>
                </div>

                <div class = "form-group row">
                    <div class = "col">
                        <input asp-for = "@Model.CodingLookup.CodingChangesRequired" type = "radio" name = "tele" value = "tele2" />
                        <label for = "tele2">I have reviewed* my 2021/2022 coding forms and changes are required. I will submit revised 2022/2023 coding forms </label>
                    </div>
                </div>
                <div class = "form-group row">
                    <div class = "col">
                        <input asp-for = "@Model.CodingLookup.NotCompletedCodingForm" type = "radio" name = "tele" value = "tele3" />
                        <label for = "tele3">I have not previously completed coding forms but will be coding in 2022/2023. I will submit new coding forms .</label>
                    </div>

У меня есть следующие классы моделей:

public partial class EmployeeInfo
    {
    
      public int EmployeeInfoId { get; set; }
       public virtual CodingLookup? CodingLookup { get; set; }
    }
    
    public partial class CodingLookup
{
    public int CodingLookupId { get; set; }

    public bool CodingOption { get; set; }

    public bool CodingChangesRequired { get; set; }
    public bool CodingChangesNotRequired { get; set; }

    public bool NotCompletedCodingForm { get; set; }

    public virtual List<EmployeeInfo> EmployeeInfos { get; } = new List<EmployeeInfo>();
}

При необходимости я могу изменить указанный выше класс CodingLookup. Я в основном помещаю все параметры в класс модели. Когда я выбираю любой вариант и нажимаю отправить кнопка, значение codingLookup равно null в HTTPPost. Это первый раз, когда я использую RadioButtons.

ОБНОВЛЯТЬ:

Я также попытался изменить класс модели следующим образом:

    public partial class EmployeeInfo
        {
        
          public int EmployeeInfoId { get; set; }
           public virtual CodingLookup? CodingLookup { get; set; }
        }
    
       
       public partial class CodingLookup
       {
           public int CodingLookupId { get; set; }
    
           public string CodingOption { get; set; }
           public string[] CodingOptions = new[] { "Coding Test1", "Coding Test2", "Coding Test3", "Coding Test4"};}
    }
      public virtual List<EmployeeInfo> EmployeeInfos { get; } = new List<EmployeeInfo>();
   }

Это мой код Razor:

@model AckPackage.Models.EmployeeInfo

<div class = "form-group row">

  <div class = "col">

                     @foreach (var x in Model.CodingLookup.CodingOptions)

                        {

                        <input type = "radio" asp-for = "CodingLookup.CodingOption" value = "@Model.CodingLookup.CodingOption" />

                        @Model.CodingLookup.CodingOption

                        <br />

                        }



                </div>

                </div>

Код выше тоже не работает. Я просто хочу отобразить все имена с переключателем на моей странице, а затем получить значение этого переключателя в HTTPPost. ниже мой контроллер:

[HttpPost]
  [ValidateAntiForgeryToken]

    public async Task<IActionResult> Create(EmployeeInfo employeeInfo)

    {

   }

Ошибка:

Как только я запускаю код, я получаю эту ошибку:

Любая помощь будет высоко оценена.

Вы помещаете сюда оба пространства имен (EmployeeInfo и CodingLookup)? и так ли написана страница Razor? (@model test.Models.EmployeeInfo)

Paul 21.02.2023 07:50

Да, это. Это в верхней части моего класса контроллера: @model AckPackage.Models.EmployeeInfo

rimi 21.02.2023 16:05
Типы данных JavaScript
Типы данных JavaScript
В JavaScript существует несколько типов данных, включая примитивные типы данных и ссылочные типы данных. Вот краткое объяснение различных типов данных...
Как сделать движок для футбольного матча? (простой вариант)
Как сделать движок для футбольного матча? (простой вариант)
Футбол. Для многих людей, живущих на земле, эта игра - больше, чем просто спорт. И эти люди всегда мечтают стать футболистом или менеджером. Но, к...
Знайте свои исключения!
Знайте свои исключения!
В Java исключение - это событие, возникающее во время выполнения программы, которое нарушает нормальный ход выполнения инструкций программы. Когда...
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик Модуль flexbox, также известный как гибкий модуль разметки box, помогает эффективно проектировать и...
Введение в раздел &quot;Заголовок&quot; в HTML
Введение в раздел "Заголовок" в HTML
Говорят, что лучшее о человеке можно увидеть только изнутри, и это относится и к веб-страницам HTML! Причина, по которой некоторые веб-страницы не...
1
2
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно изменить свой вид, как показано ниже:

<div class = "form-group row">
    <div class = "col">
        @foreach (var x in Model.CodingLookup.CodingOptions)
        {
            <input type = "radio" asp-for = "CodingLookup.CodingOption" value = "@x" />
            @x
            <br />
        }
    </div>

</div>

Целая рабочая демонстрация, которой вы можете следовать:

Модель

public partial class EmployeeInfo
{
    public int EmployeeInfoId { get; set; }
    public virtual CodingLookup? CodingLookup { get; set; }
}
public partial class CodingLookup
{
    public int CodingLookupId { get; set; }
    public string CodingOption { get; set; }
    public string[] CodingOptions = new[] { "Coding Test1", "Coding Test2", "Coding Test3", "Coding Test4" };
    public virtual List<EmployeeInfo> EmployeeInfos { get; } = new List<EmployeeInfo>();
}

Представление (представления/главная/создать.cshtml)

@model EmployeeInfo

<form asp-action = "Create" method = "post">
<div class = "form-group row">
    <div class = "col">
        @foreach (var x in Model.CodingLookup.CodingOptions)
        {
            <input type = "radio" asp-for = "CodingLookup.CodingOption" value = "@x" />
            @x
            <br />
        }
    </div>

</div>
<input type = "submit" value = "post" />
</form>

Контроллер

public class HomeController : Controller
{
    [HttpGet]
    public async Task<IActionResult> Create()
    {
        return View(new EmployeeInfo() { CodingLookup=new CodingLookup()});
    }
    [HttpPost]
    [ValidateAntiForgeryToken]

    public async Task<IActionResult> Create(EmployeeInfo employeeInfo)
    {
        //do your stuff....
        return View();
    }
}

Могу ли я использовать существующую модель для передачи значения Tele. Это поверх моего класса контроллера: @model AckPackage.Models.EmployeeInfo

rimi 21.02.2023 16:06

Я опубликовал обновленный класс модели.

rimi 22.02.2023 00:51

Привет @Rena, как только я запускаю код, я получаю ошибку исключения NULL. Я вставил ошибку в свой исходный пост под ошибкой.

rimi 22.02.2023 05:11

Привет @rimi, пожалуйста, посмотрите мое действие HttpGet Create для рендеринга представления, вы передали модель в свой код, как я?

Rena 22.02.2023 05:15

Привет @Rena, Когда я это сделаю, верните View(new EmployeeInfo() { CodingLookup=new CodingLookup()}); Я не получаю ошибку, но я также не получаю никакой информации о EmployeeInfo. Я передаю много информации о сотруднике, такой как имя, фамилия и другие вещи, связанные с сотрудником. Вся эта информация становится пустой.

rimi 22.02.2023 05:19

В своем Create я передаю employee = await _employeeService.GetEmployeeByEmployeeNumber(up.EmployeeId);

rimi 22.02.2023 05:20

Привет, @rimi, как твой сервис? Ошибка, вызванная тем, что CodingLookup имеет значение null, вам нужно проверить это.

Rena 22.02.2023 05:20

Я обновляю свой исходный пост и добавляю свой метод Get. В моем методе get много кода.

rimi 22.02.2023 05:25

Привет @rimi, тебе нужно рассказать, что такое сервис GetEmployeeByEmployeeNumber в исходном посте.

Rena 22.02.2023 05:26

Или вы можете попробовать изменить свойство на :public virtual CodingLookup CodingLookup { get; set; }= new CodingLookup(); в EmployeeInfo.

Rena 22.02.2023 05:29

Общедоступный виртуальный CodingLookup CodingLookup { get; набор; }= новый кодинглукуп(); работал. Спасибо за вашу помощь!!

rimi 22.02.2023 05:33

Другие вопросы по теме