2016-04-21 23 views
0

在Asp.net MVC視圖中,我創建了一個帶有輸入字段的表單。Asp.net MVC - 表單不發送給控制器

用戶設置名字(或其中的一部分),按下提交按鈕。

這是形式部分:

<div> 
    <form action="SearchCustomer" methos="post"> 
     Enter first name: <input id="Text1" name="txtFirstName" type="text" /> 
     <br /> 
     <input id="Submit1" type="submit" value="Search Customer" /> 
    </form> 
</div> 

這是SearchCustomer在控制器,從所述表格獲取數據:

CustomerDal dal = new CustomerDal(); 
string searchValue = Request.Form["txtFirstName"].ToString(); 
List<Customer> customers = (from x in dal.Customers 
          where x.FirstName.Contains(searchValue) 
          select x).ToList<Customer>(); 
CustomerModelView customerModelView = new CustomerModelView(); 
customerModelView.Customers = customers; 

return View("ShowSearch", customerModelView); 

當運行該程序,並進入第一名稱(例如「Jhon」),代碼返回到SearchCustomer函數,但Request.Form爲空。

爲什麼?

謝謝。

+4

錯字!..而不是'methos = 「POST」'應該是'方法= 「郵報」' –

+1

並且在表單動作不動作叫什麼名字? –

+1

由於@KartikeyaKhosla提到,你有一個錯誤的'methos'應該是方法,並且你的動作應該採用以下格式:YourControllerName/YourActionName –

回答

1

您需要修改代碼:

你需要在這裏提供一個動作名稱,它應該在你的控制器(SearchController)具有相同的名稱爲「ActionName」來定義你將放在下面的代碼。 如果SearchController是您的操作名稱,則提供操作可用的控制器。

<div> 
    <form action="SearchCustomer/<ActionName>" method="post"> 
     Enter first name: <input id="Text1" name="txtFirstName" type="text" /> 
     <br /> 
     <input id="Submit1" type="submit" value="Search Customer" /> 
    </form> 
</div> 

隨着Html.BeginForm:

@using (Html.BeginForm("<ActionName>","<ControllerName>", FormMethod.Post)) 
    { 
     Enter first name: <input id="Text1" name="txtFirstName" type="text" /> 
     <br /> 
     <input id="Submit1" type="submit" value="Search Customer" /> 
    } 
+3

這種方法很可能會以另一個404結束。一般而言,應該使用Url.Action()或Html.BeginForm()來代替或硬編碼路徑。 – haim770

+0

@ Zag如果這對你有用,你可以將它標記爲已接受,謝謝。 – sumngh

0

method拼寫錯了不應該讀methosmethod象下面這樣:

<form action="SearchCustomer" method="post"> 
      .... 
    </form> 
0

如果View是相同的名稱ActionResult方法,試試這個:

@using(Html.BeginForm()) 
{ 
    ... enter code 
} 

默認情況下,它將是一個POST方法類型,它將被定向到ActionResult。有一兩件事要確保的:你需要在你的ActionResult方法[HttpPost]屬性,這樣的形式知道去哪裏:

[HttpPost] 
public ActionResult SearchCustomer (FormCollection form) 
{ 
    // Pull from the form collection 
    string searchCriteria = Convert.ToString(form["txtFirstName"]); 
    // Or pull directly from the HttpRequest 
    string searchCriteria = Convert.ToString(Request["txtFirstName"]); 
    .. continue code 
} 

我希望這有助於!

0

在控制器上設置[HttpPost]。

[HttpPost] 
public ActionResult SearchFunction(string txtFirstName) 
    { 
      CustomerDal dal = new CustomerDal(); 
     string searchValue = txtFirstName; 
     List<Customer> customers = (from x in dal.Customers 
          where x.FirstName.Contains(searchValue) 
          select x).ToList<Customer>(); 
     CustomerModelView customerModelView = new CustomerModelView(); 
     customerModelView.Customers = customers; 
     return View("ShowSearch", customerModelView); 
    } 
+0

我的推特處理程序:@ mohitdagar80 –

相關問題