【问题标题】:T4MVC and Html.BeginFormT4MVC 和 Html.BeginForm
【发布时间】:2012-05-10 23:19:29
【问题描述】:

我有动作方法

[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参数,不知道怎么传?

【问题讨论】:

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


    【解决方案1】:

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

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

    如果零参数方法仍未生成,但其他方法已生成,请检查您的 Search 方法可能存在哪些异常。您可能正在做一些 T4MVC 不支持的事情。今天发生在我身上的一个返回字符串的方法。根据In MVC, how do I return a string result?,我必须使用 null 参数 hack 或返回 ContentResult,David 在T4MVC and Ajax method with parameter 引用了它。

    【讨论】:

    • 顺便说一句,它正确设置了我的标题并做了其他不错的事情。我不需要 T4MVC 来支持字符串返回。
    【解决方案2】:

    你可以传递 null:

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

    【讨论】:

    • T4MVC 总是生成一个不带参数的重载,所以我认为不传递任何东西都会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多