2013-06-21 2 views
0

Я новичок здесь, и у меня есть вопрос о поисковой части кода в MVC 4. У меня есть этот кусок кода:Поиск Issue в ASP.NET MVC 4

public ActionResult Index(string searchTerm = null) 
{ 
    var model = entities.Users 
         .Where(m => searchTerm == null || m.SureName.Contains(searchTerm)) 
         .Select(m => new UserViewModel 
          { 
           Name = m.Name, 
           SureName = m.SureName, 
           Department = m.Department, 
           Mail = m.Mail 
          }); 
} 

Index.cshtml

<form method="get"> 
    <input type="search" name="searchTerm " /> 
    <input type="submit" value="Search ..." /> 
</form> 

@foreach (var item in Model) 
{ 
    <div> 
     <h4>@item.Name, @item.SureName</h4> 
     <div>@item.Department, @item.Mail</div> 
    </div> 
} 

Когда я запускаю это, он работает, пока я не хочу искать что-либо. Проблема в маршрутизации. Потому что, если я буду вручную набирать «: XXXX /? SearchTerm = Luk», все работает нормально. Но когда я делаю то же самое на URL страницы, это выглядит так: «XXXX /? SearchTerm + = Luk». Кто-нибудь знает, почему есть знак +? Я думаю, что это проблема, которую я имею здесь.

+0

'+' используется для пробелов() в url – Satpal

+5

The + исходит из пробела между m и конечной цитатой в name = "searchTerm" – Rune

+1

Задайте свой вопрос ** содержательный ** название, пожалуйста. – abatishchev

ответ

2

У вас есть пропуски здесь:

<input type="search" name="searchTerm " /> 

Это будет HTML, закодированный к «+» в строке запроса. Удалите пробел из атрибута «name», и вы должны быть в порядке.

+0

Большое спасибо ... Я смотрел эту маленькую вещь .., o) – user2507880