使用FORM进行GET - 如何设置查询字符串参数?

时间:2014-08-28 21:13:44

标签: asp.net-mvc asp.net-mvc-4

我有一个像这样的控制器方法:

    public ActionResult Create(string project_title)
    {
        return View(new ProjectViewModel()
        {
            Title = project_title
        });
    }

在另一个页面上,我想获取文本框的值,并作为查询字符串参数发送到此方法。

我在此页面上的观点如下所示:

@using (Html.BeginForm("Create", "Project", FormMethod.Get))
{
    <input type="text" id="project_title" name="project_title" placeholder="Title of your project" class="input-lg" />
    <input type="submit" value="Get started" class="btn btn-success btn-lg" />
}

然而,虽然我认为这样可行,但我收到以下错误:

No parameterless constructor defined for this object.

1 个答案:

答案 0 :(得分:4)

我怀疑您收到的错误消息与您在问题中显示的代码无关。可能定义了此ProjectController操作的Create类有一些非默认构造函数,您没有正确配置DI框架以注入正确的依赖项:

public class ProjectController : Controller
{
    public ProjectController(IFoo foo)
    {
    }

    public ActionResult Create(string project_title)
    {
        return View(new ProjectViewModel()
        {
            Title = project_title
        });
    }
}

如果您没有控制器的默认(无参数)无参数构造函数,ASP.NET MVC默认的控制器工厂将无法实例化此ProjectController,除非您使用某些DI框架并指定具体的要在此构造函数中注入的类型。