#sql-server #razor-2 #asp.net-webpages
#sql-сервер #razor-2 #asp.net-веб-страницы
Вопрос:
Мне нужно попробовать частично выполнить поиск пользователей, прямо сейчас мой код находит результаты только на основе ТОЧНОГО имени пользователя. Как я могу это сделать?
Мой код можно найти ниже, пожалуйста, обратите внимание, что я использую «@0», что каким-то образом мешает мне использовать %@0%.
Here's my code:
@{
Layout = "~/Admin/_SiteLayout.cshtml";
var db = Database.Open("MikZeRCoding2");
var userSearchQuery = "SELECT * FROM [Users] WHERE UserName = @0";
var UsernameSearch = "";
var ErrorMessage = "";
var searchString = Request.Form["search-username"];
if (IsPost) {
UsernameSearch = Request.Form["search-username"];
if (UsernameSearch.IsEmpty()) {
ErrorMessage = "You didn't search for anything.";
}
if (!UsernameSearch.IsEmpty() amp;amp; db.QueryValue(userSearchQuery, UsernameSearch) == null) {
ErrorMessage = "No results for '" searchString "' were found...";
}
if (searchString == "bitch") {
ErrorMessage = "Bitch spotted in-front of your pc monitor.";
}
else {
}
}
}
<form method="post" action="">
<div class="input-group">
<input type="text" name="search-username" placeholder="Search for a user" class="form-control" />
<span class="input-group-btn">
<button class="btn btn-default glyphicon glyphicon-search" type="button"></button>
</span>
</div>
<input type="submit" value="Search" />
@foreach(var user in db.Query(userSearchQuery, UsernameSearch)) {
<a href="@Href("~/Admin/Accounts/User", user.UserId)"><span>[ @user.UserId ]</span> @user.UserName</a>
}
@if(!ErrorMessage.IsEmpty()) {
<div class="alert alert-danger">@ErrorMessage</div>
}
</form>
Ответ №1:
Я думаю, вы должны быть в состоянии сделать:
var userSearchQuery = "SELECT * FROM [Users] WHERE UserName LIKE '%' @0 '%'";
Редактировать:
Ничего не возвращать, когда @0
пусто:
var userSearchQuery = "SELECT * FROM [Users] WHERE UserName LIKE '%' @0 '%' and @0 <> ''";
Комментарии:
1. Это действительно работает, спасибо!! Однако, к сожалению, когда я делаю это и захожу на страницу, на которой включено окно поиска, кажется, что оно выводит КАЖДОГО пользователя, затем, когда я ищу что-то вроде «использовать», появляется только «Пользователь», если вы понимаете, что я имею в виду:P Есть какой-нибудь способ исправить это?
2. @user3250722 . . . Вы говорите, что когда строка поиска пуста, она возвращает всех пользователей. Что он должен возвращать?
3. Да, я знаю, это я веду себя глупо. Но я пытался исправить эту проблему, чтобы она не выполняла автоматический поиск ничего при загрузке страницы, но, похоже, я не могу понять, как на самом деле это сделать.