В настоящее время у меня есть программа, которая получает пользовательский ввод через текстовый ввод. Этот текстовый ввод затем переносится в файл .txt, который затем читается в разборный div в моем представлении. Каждый вход считается «категорией» (каждая категория является заголовком своего сворачиваемого заголовка), и каждой категории назначается первичный ключ, начиная с 0 и выше. Во-вторых, пользователь может ввести подкатегорию, которая затем будет отображаться внутри свертки под заголовком соответствующей категории. Как показано на рисунке ниже:
«Работа в университете» является входом категории,
«Назначение 1» является суб -Категория (Item) input.
Я хотел бы назначить внешний ключ для подкатегории (Item), который, очевидно, будет относиться к первичному ключу соответствующей категории. При этом я хотел бы иметь возможность вводить несколько подкатегорий (элементов) для каждой категории, при этом каждая подкатегория (элемент), очевидно, имеет один и тот же внешний ключ, если они назначены одной и той же категории.
В настоящее время мои проблемы заключаются в следующем: если у меня будет несколько категорий, откроются все складные, независимо от того, на какую категорию я нажимаю. Я предполагаю, что это как-то связано с 'foreach' l oop, который я сейчас использую. Во-вторых, я очень застрял в том, как я могу продолжать дальше. Я не могу ожидать полного решения моей проблемы, однако некоторые общие рекомендации будут с благодарностью.
В качестве примечания; Пользователь добавляет подкатегорию (элемент), щелкнув значок «плюс» на изображении выше, и пользователь переходит в отдельное представление, где он / она может затем ввести подкатегорию (элемент) для категории « Значок «плюс» связан, эта подкатегория (элемент) затем помещается в файл .txt вместе со своим собственным первичным ключом, а также внешним ключом соответствующей категории, которой она назначена.
Ниже приведен контроллер, который я использую для чтения во введенных категориях;
[HttpPost]
public ActionResult Category(string categoryDescription)
{
var dataFile = Server.MapPath("~/App_Data/Category.txt");
var numberOfLines = System.IO.File.ReadLines(dataFile).Count(); /* Records the ID (PK) of each inputted category */
var textFileData = categoryDescription + "," + numberOfLines + Environment.NewLine;
System.IO.File.AppendAllText(dataFile, textFileData);
return View();
}
Далее следует второй контроллер и представление, в котором я читаю и отображаю введенные категории;
Контроллер:
public ActionResult Index()
{
var dataFile = Server.MapPath("~/App_Data/Category.txt");
Category passCategory = new Category
{
result = "",
delimiterChar = new[] { ',' },
userData = System.IO.File.ReadAllLines(dataFile)
};
return View(passCategory);
}
Просмотр:
<div class="categoryList">
@Model.result
@if (Model.result == "")
{
foreach (String dataLine in Model.userData)
{
<p>
<a data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
@dataLine.Split(Model.delimiterChar)[0]
</a>
<button class="btn" onclick="location.href='@Url.Action("Items","Items")'" id="@dataLine.Split(Model.delimiterChar)[1]"><i class="fas fa-plus secondaryPlusIcon" id="@dataLine.Split(Model.delimiterChar)[1]"></i></button>
<button class="btn" id="@dataLine.Split(Model.delimiterChar)[1]"><i class="far fa-edit secondaryEditIcon" id="@dataLine.Split(Model.delimiterChar)[1]"></i></button>
<button class="btn" id="@dataLine.Split(Model.delimiterChar)[1]"><i class="far fa-trash-alt secondaryDeleteIcon" id="@dataLine.Split(Model.delimiterChar)[1]"></i></button>
</p>
<div class="collapse" id="collapseExample">
<div class="card card-body w-25 p-3 collapsible" id="@dataLine.Split(Model.delimiterChar)[1]">
<!-- This is where i wish to display the added items per each category... -->
</div>
</div>
}
}
</div>
Я уже создал контроллер для чтения подкатегорий (элементов) в файл .txt (следует очень похоже структура контроллера категории (Category ActionResult) ..
Я надеюсь, что смог предоставить достаточную информацию и код для понимания того, что именно я пытаюсь выполнить sh. Любой помощь будет принята с благодарностью, большое спасибо!