У меня есть кнопка, при нажатии которой открывается модальное окно с подтверждением, указывающее, хочет ли пользователь удалить выбранную строку или нет, поэтому на модальном поле есть опции «Да» и «Нет». С помощью кнопки «Да», выполняющей функцию onclick, которая отвечает за удаление позиции (эти операции выполняются в моем контроллере и не являются частью этого вопроса). Чтобы обеспечить немного фона, изначально функция onclick была частью моей кнопки, которая теперь открывает модал, и это работало отлично, как и предполагалось. Однако теперь эта кнопка служит только одной цели - открытию модального окна. В модальном режиме функция onclick теперь перемещена на кнопку «Да». Но теперь эта функция onclick не работает так, как она используется, и я считаю, что это как-то связано с foreach l oop, в котором все это находится.
Ниже приведен код кнопки и модальный:
@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;
string deleteHolder = dataLine.Split(Model.CategoryList.delimiterChar)[0];
<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" data-toggle="modal" data-target="#deleteHolder" id="@dataLine.Split(Model.CategoryList.delimiterChar)[1]"></button>
</p>
<div class="modal" id="deleteHolder" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Modal body text goes here.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" onclick="location.href = '@Url.Action("DeleteCategoryLine", "Index", new { id = dataLine.Split(Model.CategoryList.delimiterChar)[1] })'">Yes</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">No</button>
</div>
</div>
</div>
</div>
count++;
}
}
Проблема, с которой я столкнулся: Событие onclick удаляет строку в текстовом файле, поэтому у меня есть счетчик, триггер и цель для определения КАКОЙ строки для удаления. Однако после перемещения события onclick в мой модал он всегда удаляет первую строку в текстовом файле. Я не уверен, почему это происходит? Разве я не понимаю значение, которое представляет модал?
Мой контроллер Действие:
public ActionResult DeleteCategoryLine(int id, string changedItem)
{
string strFilePath = "~/App_Data/Category.txt";
string strSearchText = id.ToString();
string strOldText;
string n = changedItem;
StreamReader sr = System.IO.File.OpenText(Server.MapPath(strFilePath));
while ((strOldText = sr.ReadLine()) != null)
{
string[] x = strOldText.Split(',');
if (!x[1].Contains(strSearchText))
{
n += strOldText + Environment.NewLine;
}
}
sr.Close();
System.IO.File.WriteAllText(Server.MapPath(strFilePath), n);
}