Google MVC4 中的 CSE,使用表单时遇到问题
Google CSE in MVC4, trouble using a form
我到处搜索,找不到这个问题的答案,有很多 ajax 和不相关的链接。请仅在 C# MVC 中回答(无 aspx 文件等)
我想在一块 cshtml 上使用表单将查询读入 google cse,因此我在 CSE 中使用 google 仅结果页面选项。问题是他们没有指定如何将结果输出到 javascript,而且大约 10 年前我只是简单地完成了 js,我不知道该怎么做,需要一些帮助。
我想将我的查询发送到搜索控制器,然后搜索控制器生成包含 google 结果的页面。 google javascript 列在布局页面中。
Header 包含 google 搜索的 cshtml 文件
<form class="navbar-form input-group-sm btn-group" gname="gsearch" role="search" method="post" action="@Url.Action("Index", "Search")">
<div class="navbar-form input-group-addon input-group-sm btn-group-sm" style="background-color:transparent">
<input class="form-control" name="q" size="20" style="vertical-align:bottom;margin:0px;padding:0px" maxlength="255" value="search site" onclick="value = '';" />
<button class="btn btn-default btn-sm" type="submit" style="margin:0px"><i class="glyphicon glyphicon-search" style="margin:0px;"></i></button>
</div>
</form>
控制器
public class SearchController : Controller
{
//
// GET: /Search/
[HttpPost]
public ActionResult Index(string q)
{
return View();
}
}
搜索页面.cshtml
<div class="gcse-searchresults" >
<gcse:searchresults-only linkTarget="_top" gname="gsearch"></gcse:searchresults-only>
弄清楚发生了什么:
在我的声明中,我应该使用 method="get" 而不是方法 post 并且我应该在 SearchController 中的函数之前声明 [HttpGet] 而不是 [HttpPost],代码现在工作正常。
在控制器中,程序需要 [HttpGet] 而不是 [HttpPost],不需要变量(因为 js 会处理它)
[HttpGet]
public ActionResult Index()
{
return View();
}
在 header.cshtml 中,表格的第一行需要从 method="post" 更改为 method = "get"
<form class="navbar-form input-group-sm btn-group" gname="gsearch" role="search" method="get" action="@Url.Action("Index", "Search")">
希望这对 MVC 和 CSE 集成的其他人有所帮助。
我到处搜索,找不到这个问题的答案,有很多 ajax 和不相关的链接。请仅在 C# MVC 中回答(无 aspx 文件等)
我想在一块 cshtml 上使用表单将查询读入 google cse,因此我在 CSE 中使用 google 仅结果页面选项。问题是他们没有指定如何将结果输出到 javascript,而且大约 10 年前我只是简单地完成了 js,我不知道该怎么做,需要一些帮助。
我想将我的查询发送到搜索控制器,然后搜索控制器生成包含 google 结果的页面。 google javascript 列在布局页面中。
Header 包含 google 搜索的 cshtml 文件
<form class="navbar-form input-group-sm btn-group" gname="gsearch" role="search" method="post" action="@Url.Action("Index", "Search")">
<div class="navbar-form input-group-addon input-group-sm btn-group-sm" style="background-color:transparent">
<input class="form-control" name="q" size="20" style="vertical-align:bottom;margin:0px;padding:0px" maxlength="255" value="search site" onclick="value = '';" />
<button class="btn btn-default btn-sm" type="submit" style="margin:0px"><i class="glyphicon glyphicon-search" style="margin:0px;"></i></button>
</div>
</form>
控制器
public class SearchController : Controller
{
//
// GET: /Search/
[HttpPost]
public ActionResult Index(string q)
{
return View();
}
}
搜索页面.cshtml
<div class="gcse-searchresults" >
<gcse:searchresults-only linkTarget="_top" gname="gsearch"></gcse:searchresults-only>
弄清楚发生了什么: 在我的声明中,我应该使用 method="get" 而不是方法 post 并且我应该在 SearchController 中的函数之前声明 [HttpGet] 而不是 [HttpPost],代码现在工作正常。
在控制器中,程序需要 [HttpGet] 而不是 [HttpPost],不需要变量(因为 js 会处理它)
[HttpGet]
public ActionResult Index()
{
return View();
}
在 header.cshtml 中,表格的第一行需要从 method="post" 更改为 method = "get"
<form class="navbar-form input-group-sm btn-group" gname="gsearch" role="search" method="get" action="@Url.Action("Index", "Search")">
希望这对 MVC 和 CSE 集成的其他人有所帮助。