T4MVC和Html.BeginForm

时间:2012-05-01 12:20:51

标签: asp.net-mvc asp.net-mvc-3 t4mvc

我有行动方法

[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" />
        }

但这不起作用,Search()需要searchTerm参数,我不知道如何传递它?

2 个答案:

答案 0 :(得分:2)

你可以传递null:

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

答案 1 :(得分:0)

检查T4MVC ProductsController.generated.cs文件,查找采用零参数的Search()方法。听起来你不会在那里找到它,但正如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友好引用。