#javascript #c# #asp.net #asp.net-core-mvc #case-sensitive
Вопрос:
Поэтому я создал веб-сайт, на который вы можете загружать, скачивать, удалять и просматривать файлы. У меня также есть функция java-скрипта, которая позволяет пользователю выполнять поиск по файлам. Единственное, что важно, это то, что поиск чувствителен к регистру. Может ли кто-нибудь помочь мне с примером кода о том, как я должен изменить свой сценарий, чтобы он больше не учитывал регистр? Я очень новичок в ASP.NET и все еще пытаюсь собраться с мыслями.
Вот страница индекса:
@model IEnumerable<Proiect2PracticaClona.Models.Files>
<center>
<h1>Daca nici acu nu merge ... ma sinucid</h1>
<h2>Sa moara mama</h2>
<hr />
@if (User.IsInRole("Admin"))
{
<form methord="post" enctype="multipart/form-data" asp-controller="Home" asp-action="Index">
<input type="file" name="fifile" />
@Html.RadioButton("category", "incepator")
@Html.RadioButton("category", "intermediar")
@Html.RadioButton("category", "admin")
<input type="submit" value="Upload" />
<hr />
</form>}
<div>
File Name:<input id="search" onkeyup="search()" placeholder="cauta"/>
</div>
<table class="table">
@if (User.IsInRole("User"))
{
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link">Incepatori <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link">Avansati</a>
</li>
<li class="nav-item dropdown">
</li>
<li class="nav-item">
<a class="nav-link disabled">Admini</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
}
<tr>
<th>File Name</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.info</td>
<td><a href="@Url.Action("Download","Home",new { filename=item.info })">Download</a></td>
@if (User.IsInRole("Admin"))
{
<td><a href="@Url.Action("Delete", "Home", new { filedel = item.info })">Delete</a></td>
}
<td><a href="/Home/DocumentViewer/@item.info">Viewer</a></td>
</tr>
}
</table>
@section scripts
{
<script>
function search() {
$("tr").each(function (index, value) {
if (index > 0 amp;amp; !$(this).find("td")[0].innerText.includes($("#search").val())) {
$(this).attr("hidden", true);
} else {
$(this).removeAttr("hidden");
}
console.log(value);
})
}
</script>
}
</center>
Ответ №1:
Почему бы не преобразовать обе стороны в нижний регистр при проверке. В этом случае не имеет значения, каков корпус элемента в блоке td и каков случай текста, вставленного пользователем. Мы часто используем это в нашем приложении для сравнения.
function search() {
$("tr").each(function (index, value) {
if (index > 0 amp;amp; !$(this).find("td")[0].innerText.toLowerCase().includes($("#search").val().toLowerCase())) {
$(this).attr("hidden", true);
} else {
$(this).removeAttr("hidden");
}
console.log(value);
})
}
Комментарии:
1. Большое вам спасибо, работает безупречно, люблю вас
Ответ №2:
Чувствительность к регистру может быть снижена путем преобразования значения с обеих сторон запроса в нижний или верхний регистр (в соответствии с вашими предпочтениями.
Поэтому ваша логика поиска должна измениться с
if (index > 0 amp;amp; !$(this).find("td")[0].innerText.includes($("#search").val())) {
К этому:
if (index > 0 amp;amp; !$(this).find("td")[0].innerText.toLowerCase().includes($("search").val().toLowerCase())) {
Комментарии:
1. Большое спасибо