2008-08-12 25 views
12

'daki form gönderimleri için yönlendirme altyapısını kullanın ASP.NET MVC Preview 4 kullanıyorum ve form gönderimleri için yönlendirme motorunu nasıl kullanacağımı öğrenmek istiyorum.ASP.NET MVC Preview 4

routes.MapRoute(
      "TestController-TestAction", 
      "TestController.mvc/TestAction/{paramName}", 
      new { controller = "TestController", action = "TestAction", id = "TestTopic" } 
      ); 

Ve şöyle bir formu beyanı:

Örneğin, bir böyle rotanın çıkan

<form method="get" action="/TestController.mvc/TestAction"> 
    <input type="text" name="paramName" /> 
    <input type="submit" /> 
</form> 

: zorlastırmaktadır

<% using (Html.Form("TestController", "TestAction", FormMethod.Get)) 
    { %> 
    <input type="text" name="paramName" /> 
    <input type="submit" /> 
<% } %> 

Bir form gönderiminin URL adresi:

localhost/TestController.mvc/TestAction?paramName=value 

istenen URL'ye bu form gönderme rota için herhangi bir yolu var mı: Sadece istek parametreleri denetler ayrı eylem oluşturmak için aklıma gelen

localhost/TestController.mvc/TestAction/value 

sadece çözümleri, ya hiç Javascript kullan.

cevap

9

Çözüm:

public ActionResult TestAction(string paramName) 
{ 
    if (!String.IsNullOrEmpty(Request["paramName"])) 
    { 
     return RedirectToAction("TestAction", new { paramName = Request["paramName"]}); 
    } 
    /* ... */ 
} 
+1

Bu, sunucu yerine 2 istekte bulunur, değil mi? – Maslow

+0

@Maslow yup! 302 yönlendirme her zaman orada olacak – shashwat

3

Rotanızda, URL'nin {paramName} bölümünden kurtulun. Olmalıdır:

TestController.mvc/TestAction

o size rota isteği istediğiniz URL gibi. Formunuz daha sonra bu URL'ye gönderilecek. Gönderilen form değerleri, bir eylem yönteminin parametrelerine otomatik olarak eşlenir, bu nedenle bu verilerin işlem yönteminize aktarılmasından endişe etmeyin.

3

Anlayışlı olduğum şey, HTML'nin nasıl çalıştığıdır. Bir <form url="foo" method="get"> yapar ve formu gönderirseniz, form foo gönderir?

MVC ile ilgisi yoktur.

Ayrıca, REST'in hangi bölümü bu URL'yi ihlal ediyor? güzel değil URL, ancak REST katı tanımı ile, RESTful olabilir. REST, sorgu parametrelerinin bir URL segmentinde olması gerektiğini belirtmez. Ve bu durumda, bunlar sorgu parametreleridir.

+1

Evet haklısın - teşekkürler. Bunun üzerine düşündüğümden bile emin değilim - belki sadece MVC uygulamasının form gönderildikten sonra yeni ve güzel bir URL'ye yönlendirilmesi için. Daha sonraki GET/POST öznitelikleri yardımcı olur. –