ASP.NET MVC - Каков наилучший способ создания поисковой формы, которая правильно работает с SEO и пользователями без JS? - PullRequest
1 голос
/ 21 августа 2010

Я работаю над созданием поисковой системы в своем приложении, и поскольку я не хочу, чтобы в моем URL была строка запроса, в настоящее время я использую Javascript для отправки поисковых запросов для меня.

В основном я НЕ использую "форму", а скорее просто ввод

<input id="searchBox" class="search" name="searchTerm" tabindex="1" onfocus=" this.className = 'search-alt'; if (this.value=='search...') this.value = ''" type="text" onkeypress="searchKeyPress(event,this.form)" maxlength="80" size="28" value="search...">

<script type="text/javascript">
    function searchKeyPress(e, form) {
        var key = e.keyCode || e.which;
        if (key == 13) {window.location.href = '<%: url.Content("~/search") %>/' + $('#searchBox').val();}}
</script>

Проблема с этим методом "двойная"

  1. Если у пользователя нет Javascript, форма не будет отправлена ​​
  2. Я не уверен, что поисковая система сможет использовать эту форму поиска либо

Так что мой вопрос

Могу ли я использовать элемент Form на моей странице, который может отправлять "http://example.com/search/{searchTerms}" вместо "http://example.com/search/?q={searchTerms}", НЕ используя Javascript?

Я использую ASP.NET MVC 2

1 Ответ

1 голос
/ 21 августа 2010

Хорошо, я думаю, что нашел свое решение. В основном я использую RedirectToAction, если есть элемент строки запроса.

View

 <form action="/search/" id="searchForm" method="get">
    <input id="searchBox" class="search-gray" name="searchTerms" tabindex="1" onblur=" if (this.value==''){this.value = 'search...'; this.className = 'search-gray'}" onfocus=" this.className = ''; if (this.value=='search...') {this.value = ''}" type="text" maxlength="80" size="28" value="search...">
</form>

Контроллер

    Function Index(Optional ByVal searchTerms As String = "") As ActionResult

        If Not Request.QueryString("searchTerms") = "" Then
            Return RedirectToAction("Index", "Search", New With {.searchTerms = searchTerms})
        End If

        ViewData("searchTerms") = searchTerms
        Return View()
    End Function

Нет больше JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...