2016-04-05 12 views
0

Bir formdan bir denetleyici eylemine veri gönderemiyorum. Formu HTML.BeginForm() ile oluşturdum ve el ile sorgu dizesini oluşturduğumda iyi çalışan bir denetleyicim var, ancak denetleyici eylemimle bir formun nasıl işleneceğini anlamıyorum. Form verisini denetleyici eylemine doğru şekilde nasıl gönderirim?

<form class="navbar-form navbar-left"> 
        <div class="form-group> 
         @using (Html.BeginForm("GeneralSearch", "Search", FormMethod.Post)) 
         { 
          @Html.TextBox("searchString") 

          <button type="submit" class="default">Submit</button> 
         } 

        </div> 
       </form> 

Ve

sonra benim denetleyicisi Şu anda ASP.NET otomatik orada yerleştirilen HttpGet nitelik. Ancak, onu HttpPost olarak değiştirirsem, sorun hala devam eder. basitçe varsayılan denetleyici ve bunun yerine belirtilen "Ara" kontrolörün eylemini yükler

http://localhost:64562/?searchString=test

: Ben metin girmek ve formu gönderin

[HttpGet] 
    public ActionResult GeneralSearch(string searchString) 
    { 
     return View("SearchResult", viewModel); 
    } 

, bir ağ isteği gönderilir using bildirimi. Belirli bir işlem için doğru bir şekilde nasıl yayınlarım?

+0

bak olmalıdır. Bağlanmaya çalışmak için 'name =" searchString "' ile bir girişe ihtiyacınız olacak. Ayrıca, form eylemi Mesajdır, ancak eyleminiz '[HttpGet]' olarak işaretlenmiştir. GET parametreleri, sorgu gövdesinden geçirilen sorgu dizesi ve POST parametrelerinden geçirilir. – Jasen

+0

Textbox yönteminde verilen ad, HTML'de kullanılan ad değil midir? – user9993

+1

@ user9993 - Çevrimiçi bir eğiticiyi tamamlamanız veya biraz okuma yapmanız en iyisi olabilir. [MVC'de View From Controller'a Veri Alma] gibi bir şey (http://www.c-sharpcorner.com/UploadFile/3d39b4/getting-data-from-view-to-controller-in-mvc/). Alternatif, yanlışlıkla hata ile yanıltıcı bir şekilde yanılmaktır. – Igor

cevap

1

GET'i dinleyen bir yönteme POST yapıyorsunuz.

Anahtarı FormMethod

@using (Html.BeginForm("GeneralSearch", "Search", FormMethod.Get)) 
+1

Denetleyici eyleminde muhtemelen mevcut "HttpGet" hakkında bir şeyler eklemelisiniz. – Igor

3

Html.BeginForm( bir <Form> etiketi ekler ama aşağıda görüldüğü gibi başka bir formu etiketinin içine Form etiketini eklemeye çalıştığınız bakınız; hangisi yanlış.

<form class="navbar-form navbar-left"> 
        <div class="form-group> 
         @using (Html.BeginForm("GeneralSearch", "Search", 

Yine, Denetleyiciniz GET ve POST isteği karşılamak üzere farklı eylem yöntemini ortaya olmalıdır ve oldukça form için işlenen html de

public ActionResult GeneralSearch() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult GeneralSearch(string searchString) 
{ 
    return View("SearchResult", viewModel); 
} 
İlgili konular