在我的MVC 4网站中,我在_Layout母版页中定义了一个共同的顶级菜单。在该菜单中,我有一个搜索输入文本框,几乎与stackoverflow站点中的菜单相同,但我在搜索输入文本字段中有一个提交按钮。
当我点击该按钮时,如何触发操作并将该表单提交给某个控制器?在MVC中有可能吗?
以下是表格的代码:
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" id="teste" data-provide="typehead" class="form-control" placeholder="Procurar" autocomplete="off">
</div>
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
</form>
答案 0 :(得分:6)
使用MVC razor语法而不是创建自己的表单:
@using(Html.BeginForm("MyAction", "MyController"))
{
<div class="form-group">
<input type="text" id="teste" data-provide="typehead" class="form-control" placeholder="Procurar" autocomplete="off"></div>
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
}
答案 1 :(得分:3)
Rogier的回答是正确的,但我注意到你的表单标签有一些HTML属性,在这种情况下你需要使用Html.BeginForm()
的不同重载:
@using (Html.BeginForm("action", "controller",
FormMethod.Post, new { @class = "navbar-form navbar-left", role = "search" }))
{
// ...
}
@
符号前缀class
是必需的,因为class
是C#中的关键字。没有它,它将产生错误。
上面的代码假设您是POSTing
表单。如果您使用的是GET
,只需将表单方法更改为FormMethod.Get
。