2

我有行动方法

[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 参数,我不知道如何传递它?

4

2 回答 2

2

你可以传递空值:

@using (Html.BeginForm(MVC.Products.Search(null), FormMethod.Post))
于 2012-05-01T12:23:12.723 回答
0

检查您的 T4MVC ProductsController.generated.cs 文件以获取采用零参数的 Search() 方法。听起来你在那里找不到它,但正如上面 David Ebbo 所发布的,它应该在大多数情况下生成。考虑到您在此处粘贴的方法被修饰为虚拟,这尤其奇怪,这可能发生在之前被 T4MVC 标记的某个时间点。

因此,要修复它,您可以尝试删除 *.generated.cs 文件并重新生成它们,方法是右键单击 VS IDE 中的 T4MVC 文件并选择“运行自定义工具”。

如果零参数方法仍未生成,但其他方法已生成,请检查您的 Search 方法可能有哪些异常。您可能正在做一些 T4MVC 不支持的事情。今天发生在我身上的一个返回字符串的方法。根据在 MVC 中,我必须使用 null 参数 hack 或返回 ContentResult,如何返回字符串结果?,David 在T4MVC 和带有参数的 Ajax 方法中友好地引用了它。

于 2012-05-31T00:24:21.713 回答