1
MVC에서 새롭고 데이터베이스에서 와일드 카드 (*,?) 검색을 수행하려고합니다. 이것은 내가 정규식을 사용하여 수행 한 것입니다 :와일드 카드를 Regex로 변환하는 중
컨트롤러 :
using System.Linq;
using System.Text.RegularExpressions;
using System.Web.Mvc;
using WebApplication1.Models;
namespace WebApplication1.Controllers
{
public class HomeController : Controller
{
CrossWord_dbEntities db = new CrossWord_dbEntities();
public ActionResult Index(string searching)
{
if (searching == null)
{
searching = "*";
}
string regEx = WildcardToRegex(searching);
return View(db.tbl_values.ToList().Where(x => Regex.IsMatch(x.Name, regEx, RegexOptions.Singleline)));
}
public static string WildcardToRegex(string pattern)
{
return "^" + Regex.Escape(pattern).
Replace("\\*", ".*").
Replace("\\?", ".") + "$";
}
}
}
보기 :
@model IEnumerable<WebApplication1.Models.tbl_values>
<br /><br />
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
@Html.TextBox("searching") <input type="submit" value="Search" />
}
<table class="table table-striped">
<thead>
<tr>
<th>Results</th>
</tr>
</thead>
<tbody>
@if (Model.Count() == 0)
{
<tr>
<td colspan="3" style="color:red">
No Result
</td>
</tr>
}
else
{
foreach (var item in Model)
{
<tr>
<td>
@item.Name
</td>
</tr>
}
}
</tbody>
</table>
난 내 데이터베이스 세 recordes에 있습니다 : 안녕하세요, 영웅, 샬롬
을"H *"를 입력하면 결과가 표시됩니다. 안녕하세요, Hero -이 훌륭한 작품입니다. 하지만 "* lom"을 입력하면 "Shalom"대신 "No Result"가 표시됩니다 또는 "Hell?"을 입력하면 "Hello"대신 "No Result"가 표시됩니다.
내가 뭘 잘못 했습니까?
감사