2010-03-30 19 views
7

Ana sayfamda ve bir serach denetleyicisinde ve görünümünde basit bir arama formum var. Ben (örneğin) dize arama terimi "myterm" için aşağıdaki rotayı almaya çalışıyorum: kök/arama/mytermASP.NET MVC'de Yol Bul MVC

ana sayfasında formu:

<% using (Html.BeginForm("SearchResults", "Search", FormMethod.Post, new { id = "search_form" })) 
          { %> 
         <input name="searchTerm" type="text" class="textfield" /> 
         <input name="search" type="submit" value="search" class="button" /> 
         <%} %> 

Kontrolörü Eylem :

public ActionResult SearchResults(string searchTerm){...} 

Rota ben kullanma ediyorum:

routes.MapRoute(
      "Search", 
      "search/{term}", 
      new { controller = "Search", action = "SearchResults", term = (string)null } 
     ); 

routes.MapRoute(
      "Default", 
      "{controller}/{action}", 
      new { controller = "Home", action = "Index" } 
     ); 

Arama terimine her zaman "root/search" kelimesini alıyorum, girdiğim arama terimi ne olursa olsun.

Teşekkürler.

+0

Formun aslında düzgün bir şekilde yayınlandığını ve yalnızca bir URL ekledikten sonra doğrudan bir URL'den arama yapabilmeniz için bir rota eklediğimi varsayıyorum. –

cevap

3

Rotanızda startform etiketinizde ve {term} kimliğinizi kullanıyorsunuz.

İki eşleşme ihtiyacı.

+0

Başlangıçta kullanıyorum kimliğimin sadece form tanımlayıcısı olduğunu, formun searchTerm giriş alanından değeri başlangıç ​​formuna nasıl geçirebilirim? – vobs

3

Doğru bir şekilde anlıyorsanız, http://www.whatever.com/search/blah adresine gidebilmeniz için bir rota oluşturmaya çalışıyorsunuz ve SearchTamp parametresi "blah" olan SearchResults eylemine yönlendirileceksiniz.

aşağıdaki rota o ilgilenir:

routes.MapRoute(
       "Search", 
       "search/{searchTerm}", 
       new { controller = "Search", action = "SearchResults" } 
      ); 

emin rota varsayılan yolun ÖNCE veya varsayılan ilk eşleştirilecek olun. Eyleminizdeki parametreyi eşleştirmek için "term" kelimesinin "searchTerm" olarak değiştirildiğine dikkat edin. Bu gerekli.