从JavaScript调用视图

时间:2013-05-23 08:49:06

标签: c# javascript jquery asp.net-mvc

我有一个像这样定义的JavaScript函数:

function onQuickSearchClick(s) {
    var query = s.GetText();

    $.post('/Search/', { query: query });
}

现在我想用SearchController中的查询文本调用View“Search”。我怎么能这样做?

执行此操作时,不会显示任何视图:

SearchController.cs:

    public ActionResult Index(string query)
    {
        // Can't do "return View(query)" here, because this would be interpreted as the view name
        return View();
    }

如何将查询参数传递给我的Views / Search / Index.cshtml?

2 个答案:

答案 0 :(得分:2)

function onQuickSearchClick(s) {
    var query = s.GetText();

    window.location = '@Url.Action("Index", "Search")?query=' + query; 

    /* OR
    window.location = 'Search/Index?query=' + query; 
    */

    //$.post('/Search/', { query: query });
}

我想我没理解。您可以将字符串作为模型返回:

public ActionResult Index(string query)
{
    return View((object)query);
}

然后你的MVC会知道query是一个模型而不是viewName

答案 1 :(得分:1)

你必须使用三个参数重载。

第一个参数是视图名称,第二个参数是主视图名称,最后一个是模型。

return View("Index", "", query);