2014-01-13 4 views
0

Это на самом деле раздражает меня сейчас :(Не могу получить значение для одного поля текстового поля в форме - другие штрафы?

У меня есть стандартная форма поиска с текстовым вводом и серией выпадающих списков html, я пытаюсь передать эти значения в качестве параметров в URL-адресе для функции поиска но может только получить значение списка и не текстовое поле.

код выглядит следующим образом стороны

<div class="span4"> 
         <div class="control-group"> 
          <label for="focusedInput" class="control-label">Location</label> 
          <div class="controls"> 
           <asp:TextBox ID="userInp" CssClass="input-xlarge" placeholder="Where do you want to live?" runat="server"></asp:TextBox> 
          </div> 
         </div> 

         <div class="row"> 
          <div class="span2">       
           <div class="control-group"> 
            <label for="focusedInput" class="control-label">Uni Distance:</label> 
            <div class="controls"> 
             <select id="uniDist" runat="server" class="input-medium focused"> 
              <option value="0.25">Within 1/4 mile</option> 
              <option value="0.5">Within 1/2 mile</option> 
              <option value="1">Within 1 mile</option> 
              <option value="3">Within 3 miles</option> 
              <option value="5">Within 5 miles</option> 
              <option value="10">Within 10 miles</option> 
              <option value="15">Within 15 miles</option> 
              <option value="20">Within 20 miles</option> 
              <option value="30">Within 30 miles</option> 
              <option value="40">Within 40 miles</option> 
             </select>    
            </div> 
           </div> 
          </div> 

          <div class="span2 ">  
           <label for="focusedInput" class="control-label">Property type:</label> 
           <div class="controls"> 
            <select id="houseType" runat="server" class="input-medium focused"> 
             <option value="Any">Any</option> 
             <option value="3">Terraced</option> 
             <option value="2">Semi Detached</option> 
             <option value="1">Detached</option> 
             <option value="4">Apartment</option> 
             <option value="5">Bedsit</option> 
            </select> 
           </div> 
          </div>  
         </div> 
         <div class="row">       
          <div class="span4">       
           <div class="control-group"> 
            <label for="focusedInput" class="control-label">Min bedrooms:</label> 
            <div class="controls"> 
             <select id="bedNo" runat="server" class="input-medium focused"> 
              <option value="Any">Any</option> 
              <option value="1">1</option> 
              <option value="2">2</option> 
              <option value="3">3</option> 
              <option value="4">4</option> 
              <option value="5">5+</option> 
             </select>    
            </div> 
           </div> 
          </div> 


         </div>       
         <div class="row">       
          <div class="span2">       
           <div class="control-group"> 
            <label for="focusedInput" class="control-label">Minimum Price</label> 
            <div class="controls"> 
             <select id="minPrice" runat="server" class="input-medium focused"> 
              <option selected="selected" value="Any">No min</option> 
              <option value="50">£50 per week</option> 
              <option value="100">£100 per week</option> 
              <option value="125">£125 per week</option> 
              <option value="150">£150+ per week</option> 
             </select>    
            </div> 
           </div> 
          </div> 
          <div class="span2"> 
           <label for="focusedInput" class="control-label">Maximum Price</label> 
           <div class="controls"> 
            <select id="maxPrice" runat="server" class="input-medium focused"> 
              <option selected="selected" value="Any">No max</option> 
              <option value="50">£50 per week</option> 
              <option value="100">£100 per week</option> 
              <option value="125">£125 per week</option> 
              <option value="150">£150+ per week</option> 
             </select> 
           </div> 
          </div>  

         </div> 

        </div> 

сервера на основе нажатия кнопки

protected void getSearchResults(object sender, EventArgs e) 
     { 
      string url = String.Format("searchResults.aspx?userInput={0}&Distance={1}&propType={2}&noBeds={3}&minPrice={4}&maxPrice={5}",userInp.Text,uniDist.Value,houseType.Value,bedNo.Value,minPrice.Value,maxPrice.Value); 
      Response.Redirect(url); 
     } 

в этой версии ive попытался использовать asp TextBox вместо ввода HTML, запущенного на сервере, но все же текстовое значение возвращается как «". Может кто-нибудь пролить свет здесь, его только что ушли после полуночи, и я начал сходить с ума по чем-то настолько тупым;)

+0

Как вы представляете форму? Можете ли вы также отправить свой серверный код? – sh1rts

+0

отредактирован, чтобы показать, как im обрабатывает данные – JazziJeff

+0

Хорошо, так что поздняя ночная нехватка сна досталась мне, я ее выслал, и ее довольно простой:/у меня есть моя основная форма с сервером runat, а также вторичная форма тег, который этот код был вложен внутри - вот почему значения не прошли. Я отправлю ответ на этот вопрос, когда SO позволит мне :) Извините, спасибо и спасибо за вход в любом случае, ребята - им спать! – JazziJeff

ответ

1

Проблема заключалась в том, что я имел в основном следующие

<form id="Form1" runat="server"> 

<form> 
<fieldset> 

//form data here 
</fieldset> 
</form> 

</form> 

Так в основном, имеющие форму в виде означает, что я не мог получить значения на Postback, надеюсь, что это поможет кому-то!

+0

Ah да .. этот старый каштан. Одна форма на странице с веб-формами! – sh1rts

1

Я думаю, проблема в том, что вы не являетесь URL-кодированием ваших значений формы. Попробуйте использовать Server.URLEncode: -

string url = String.Format("searchResults.aspx?userInput={0}&Distance={1}&propType={2}&noBeds={3}&minPrice={4}&maxPrice={5}", Server.UrlEncode(userInp.Text), Server.UrlEncode(uniDist.Value) .. etc 

(Вы должны будете использовать URLDecode другой стороны)

Я попробовал ваше решение, и когда я отправить форму, я определенно получаю значение во всех элементы управления формой, включая текстовые поля, но если я введу что-то вроде «луны» для «где вы хотите жить?», это не ускользнет должным образом и не является допустимым URL-адресом.

+0

Это справедливая точка, поэтому точка для URL-кодирования - я упустил это! – JazziJeff

Смежные вопросы