В настоящее время у меня есть простая программа, которая получает пользовательский ввод текста. Введенный текст затем используется в качестве заголовка для bootstrap складных, эти заголовки упоминаются как «Категории» в контексте моей программы. Пользователь может щелкнуть любую из этих категорий и назначить им подкатегории (элементы). Однако мне нужно иметь возможность записать идентификатор категории, по которой щелкнули (категория, к которой пользователь хочет добавить подкатегорию ie (s)), а затем записать этот идентификатор в текстовом файле как иностранный добавлен ключ подкатегории ie (s).
Будет работать примерно так:
1.) Пользователь нажимает категорию «Домашняя работа» (имеет идентификатор (первичный ключ) из 0)
2.) Пользователь добавляет несколько подкатегорий, а именно:
'Math Homework' (с идентификатором (первичным ключом), равным 0, и Foreign ключ 0)
«Биология» (имеет идентификатор (первичный ключ) 1 и внешний ключ 0)
'французский '(Имеет идентификатор (первичный ключ) 2 и внешний ключ 0)
3.) Текстовый файл, в котором записаны подкатегории, будет иметь следующий формат:
Math Домашнее задание, 0,0
Биология, 1,0
Французский, 2,0
Примечание. в настоящее время записывает первые две части вышеприведенного примера, например: it current tly records: Math Homework, 0 ... Однако я изо всех сил пытаюсь связать внешний ключ.
Ниже приведен вид, который я использую для отображения складных объектов:
@Model.CategoryList.result
@if (Model.CategoryList.result == "")
{
int count = 0;
foreach (String dataLine in Model.CategoryList.userData)
{
string countString = count.ToString();
string target = "dataLine" + countString;
string trigger = "#" + target;
<p>
<a data-toggle="collapse" href="@trigger" role="button" aria-expanded="false" aria-controls="collapseExample">
@dataLine.Split(Model.CategoryList.delimiterChar)[0]
</a>
<button class="btn" onclick="location.href='@Url.Action("Items", "Items")'" id="@dataLine.Split(Model.CategoryList.delimiterChar)[1]"><i class="fas fa-plus secondaryPlusIcon" id="@dataLine.Split(Model.CategoryList.delimiterChar)[1]"></i></button>
<button class="btn" id="@dataLine.Split(Model.CategoryList.delimiterChar)[1]"><i class="far fa-edit secondaryEditIcon" id="@dataLine.Split(Model.CategoryList.delimiterChar)[1]"></i></button>
<button class="btn" id="@dataLine.Split(Model.CategoryList.delimiterChar)[1]"><i class="far fa-trash-alt secondaryDeleteIcon" id="@dataLine.Split(Model.CategoryList.delimiterChar)[1]"></i></button>
</p>
foreach (String dataLineItem in Model.ItemList.userDataItems)
{
<div class="collapse" id="@target">
<div class="card card-body w-25 p-3 collapsible" id="@dataLine.Split(Model.CategoryList.delimiterChar)[1]">
@dataLineItem.Split(Model.CategoryList.delimiterChar)[0]
</div>
</div>
}
count++;
}
}
В качестве дополнительного Примечание; onclick = "location.href = '@ Url.Action (" Items "," Items ")'" отвечает за перенаправление пользователя в новое представление, где он / она может вводить нужные подкатегории.
And id = "@ dataLine.Split (Model.CategoryList.delimiterChar) [1]" назначает уникальный накопительный целочисленный идентификатор, начиная с 0, каждой новой добавляемой категории. Это будет первичный ключ для заголовков категорий.
Наконец, вот контроллер, который я использовал для инициализации значений, видимых в представлении:
public ActionResult Index()
{
CategoryItemViewModel CIVM = new CategoryItemViewModel();
CIVM.ItemList = GetItemModel();
CIVM.CategoryList = GetCategoryModel();
return View(CIVM);
}
public Category GetCategoryModel()
{
var dataFile = Server.MapPath("~/App_Data/Category.txt");
Category cModel = new Category()
{
result = "",
delimiterChar = new[] { ',' },
userData = System.IO.File.ReadAllLines(dataFile) //Category Text File
};
return cModel;
}
public Item GetItemModel()
{
var dataFileItems = Server.MapPath("~/App_Data/Item.txt");
Item iModel = new Item()
{
userDataItems = System.IO.File.ReadAllLines(dataFileItems) //Items Text File
};
return iModel;
}
Надеюсь, я предоставил достаточную информацию с указанным выше кодом и контекстом. Я полагаю, что можно было бы использовать jQuery / AJAX / Json / JS et c для выполнения такой функции, однако я совершенно растерялся, с чего начать.
Любая помощь очень ценится. Большое вам спасибо!