Параметры веб-формы ASP.NET в URL - PullRequest
2 голосов
/ 27 октября 2010

У меня есть страница ASP.NET, которая содержит форму для поиска на странице.

Есть ли какое-нибудь решение, чтобы у меня был текст поиска в URL?

Я хочу предоставить своим клиентам возможность копировать / вставлять URL-адрес результатов поиска.

Ответы [ 4 ]

7 голосов
/ 27 октября 2010

Могут быть и другие лучшие / более чистые / правильные способы сделать это, например, изменить действие формы или изменить кнопку PostBackUrl , но это то, что я бы сделал.

  1. Перенаправление на себя с поисковым термином, добавленным к строке запроса .
  2. При загрузке страницы, если строка запроса не пуста, выполните поиск.

.aspx:

<asp:Label ID="Label1" runat="server" Text="Search Term:&nbsp;"></asp:Label>
<asp:TextBox ID="txtSearchTerm" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search" 
    onclick="btnSearch_Click" />

.cs:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
        return;

    if (!string.IsNullOrEmpty(Request.QueryString["SearchTerm"]))
    {
        string searchTerm = Request.QueryString["SearchTerm"];
        txtSearchTerm.Text = searchTerm;
        DoSearch(searchTerm);
    }
}
protected void btnSearch_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(txtSearchTerm.Text.Trim()))
    {
        Response.Redirect("~/Search.aspx?SearchTerm=" + txtSearchTerm.Text.Trim());
    }
}

private void DoSearch(string searchTerm)
{
    //search logic here
    Response.Write("Search result: " + searchTerm);
}
1 голос
/ 11 февраля 2012

Вы также можете использовать jQuery, чтобы сделать трюк, как это:

$(function(){

$('input[type="submit"]').click(function(e){
       e.preventDefault();
       var searchResult = "Search.aspx?q=" + $('input#textbox').val();
       $('form#myForm').attr('action',searchResult);
    });
});
1 голос
/ 28 октября 2010

После дополнительных исследований по этой теме, я думаю, что решение javascript является лучшим:

Вы можете получить доступ к атрибуту ACTION формы, используя JavaScript.

<form id="myForm" action="Search.aspx" onsubmit="return setAction();">
    <input id="textbox" />
    <input type="submit" value="Submit" />
</form>
<script type="text/javascript">

function setAction()
{
    var myForm = document.getElementById( "myForm" );
    var myText = document.getElementById( "textbox" );

    if (myForm && myForm.action && myText && myText.value != null )
    {
       myForm.action = "Search.aspx?q=" + myText.value;
    }
    return true;
}

</script>

Лично я не большой поклонник JavaScript ... но это не добавляет дополнительного запроса к серверу. Если вы считаете, что это имеет какие-либо недостатки, пожалуйста, дайте мне знать.

0 голосов
/ 27 октября 2010

Если вам нужна возможность копировать / вставлять URL-адрес, вам необходимо получить параметры поиска из формы и перенаправить обратно на форму с параметрами поиска в URL-адресе, а затем прочитать значения QueryString для выполнения поиска.

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