2016-03-15 59 views
0

我在下面的代碼有一些問題。我有2個字段和一個搜索按鈕。當我僅給Holiday字段賦予價值並進行搜索時,它不會觸及控制器。但是如果我爲Year字段給出價值,那麼只有它擊中控制器並將字段的值傳遞給它。Ajax.BeginForm()沒有命中控制器

Index.cshtml:

@using (Ajax.BeginForm("Search", "Holiday", new System.Web.Mvc.Ajax.AjaxOptions 
     { 
      InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace, 
      HttpMethod = "POST", 
      UpdateTargetId = "holidaylist" 
     })) 
{       
    <table>         
     <tr>          
      <td>Holiday: </td> 
      <td><input id="searchtext" name="searchtext" type="text" /></td>       
      <td>Year: </td> 
      <td><input id="year" name="year" type="text" />                 </td>                      
      <td><input type="submit" value="View" id="BtnSubmit" /></td> 
     </tr>        
    </table>      
} 

控制器:

HttpPost] 
public ActionResult Search(string searchtext, int year) 
{    
    try 
    { 
     string selyear = year.ToString(); 
+0

控制器的名稱是什麼?你也有任何自定義路線? – JanR

+1

因爲參數'year'是typeof'int'並且是必需的(你的控制器會拋出一個異常,將它改爲'int?year'(可爲空) –

回答

2

這條路線一直期待的一年,因爲今年是不是一個可選參數。 您可以通過使年份爲空來解決此問題:

[HttpPost] 
public ActionResult Search(string searchtext, int? year) 
    {    
     try 
     { 
      if (year != null) //you will need to handle the case where year = null 
      { 
       string selyear = year.ToString(); 
相關問題