2012-05-01 90 views
2

我的操作方法T4MVC和Html.BeginForm

[HttpPost] 
     public virtual ActionResult Search(string searchTerm) 
... 

,並形成

@using (Html.BeginForm(MVC.Products.Search(), FormMethod.Post)) 
     { 
      <input id="searchBox" name="searchTerm" type="text" /> 
      <input type="submit" value="Search" /> 
     } 

但是這是不行的,搜索()要求SEARCHTERM參數,我不知道如何將它傳遞?

回答

2

你可以傳遞null:

@using (Html.BeginForm(MVC.Products.Search(null), FormMethod.Post)) 
+0

T4MVC總是會產生一個不帶參數的重載,所以我會認爲不傳遞任何東西都會起作用。 –

0

檢查T4MVC ProductsController.generated.cs文件爲接受零個參數的搜索()方法。聽起來你不會在那裏找到它,但正如David Ebbo在上面發佈的那樣,它應該是在大多數情況下生成的。考慮到你在這裏粘貼的方法是虛擬的,這可能發生在T4MVC標記的某個時刻。

因此,要修復它,您可以嘗試刪除* .generated.cs文件並重新生成它們,方法是右鍵單擊VS IDE中的T4MVC文件並選擇「運行自定義工具」。

如果還沒有生成零參數方法,但其他參數方法是,請檢查您的搜索方法可能不常見的情況。您可能正在做T4MVC不支持的功能。今天發生在我身上的一個帶有String返回的方法。我必須使用null參數hack或返回一個ContentResult,根據In MVC, how do I return a string result?,David在T4MVC and Ajax method with parameter處引用。

+0

順便說一句,正確設置我的標題,並做了其他好東西。我不需要T4MVC來支持字符串返回。 – shannon