Как создать поле ввода во view, если условие выполняется. ASP.NET Core C#

173
18 июня 2019, 10:20

Хочу реализовать такой алгоритм.

Есть класс Properties

у него есть свойство которое ссылается на категории

так же есть поле SerealNumber

 public class Properties : Entity
    {
        [Display(Name = "Название")] public string Name { get; set; }
        public string CategoryId { get; set; }
        [Display(Name = "Категория")] 
    public Category Category { get; set; }
        public string SerialNumber { get; set; }
    }

Так же есть метод Create

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bindя("Name,CategoryId,SerialNumber,Id")] Properties properties)
        {
            if (ModelState.IsValid)
            {
                _context.Add(properties));
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            ViewData["CategoryId"] = new SelectList(_context.Categories, "Id", "Name", properties.CategoryId);
            return View(properties));
        }

Мне нужно сделать так, что при условии если категория равна к примеру (Бытовая техника), то появлялось поле SerialNumber, если к примеру (сантехника), то поле не появлялось.

Как это можно реализовать?

Я пробовал передавать значение

var comp = _context.Categories.Where(n => n.Name == "Компьютеры");
ViewData["Category"] = comp;

И потов в view

делал так

@using (@Html.BeginForm())
            {
                    if (ViewBag.Category == "Бытовая техника")
                    {
            <div class="form-group">
                <label asp-for="SerialNumber" class="control-label"></label>
                <input asp-for="SerialNumber" class="form-control"/>
                <span asp-validation-for="SerialNumber" class="text-danger"></span>
            </div>
                    }
            }

Так же пробовал просто во view так

@if (Model.Properties .Name == "Бытовая техника")
                 {
            <div class="form-group">
                <label asp-for="SerialNumber" class="control-label"></label>
                <input asp-for="SerialNumber" class="form-control"/>
                <span asp-validation-for="SerialNumber" class="text-danger"></span>
            </div>
                 }

Голову сломал, не могу понять как реализовать. Вроде простая задача, но не как не могу решить.

READ ALSO
Обратная совместимость в .NET CORE

Обратная совместимость в .NET CORE

Как я понял, многое вырезали изNET CORE в угоду кроссплатформенности

146
Получение Json из файлов и папок

Получение Json из файлов и папок

В папке music на хостинге лежал папки типа

153
В чем преимущества ORM?

В чем преимущества ORM?

Что дает мне использование Doctrine и Eloquent кроме скорости разработки(помойму спорный аргумент) и всеядности к субд(здесь конечно да)И как обстаят...

135