MVC4中的Google CSE,使用表单时出现问题

时间:2015-02-06 05:00:45

标签: c# forms asp.net-mvc-4 post google-custom-search

我搜索了高低,找不到这个答案,大量的ajax和无关的链接。答案只在C#MVC请(没有aspx文件等)

我想在一个cshtml上使用一个表单将查询读入google cse,因此我在CSE中使用了google results only page选项。问题在于他们没有指定如何将结果输出到javascript并且大约10年前只是简单地完成了js我无法弄清楚如何做到这一点并需要一些帮助。

我想将我的查询发送到搜索控制器,然后搜索控制器生成包含谷歌结果的页面。谷歌javascript列在布局页面中。

带有谷歌搜索的标题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 =&#34; get&#34;而不是方法发布,我应该在SearchController中的函数之前声明[HttpGet]而不是[HttpPost],现在代码工作正常。

1 个答案:

答案 0 :(得分:0)

在控制器中程序需要[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&amp; CSE整合。