2011-10-31 55 views
0

好的,这里是交易:我使用BeginRouteForm提交搜索。无论如何,当按钮没有设置提交,我点击按钮,它运行搜索就好,它的行为,因为它应该,这意味着内容呈现正常。当按钮被设置为提交类型并单击该按钮时,返回的内容只是一些文本,并且HTML根本不会被渲染。MVC3:单击提交按钮提交表单不会呈现局部视图

重要的是要注意,控制器试图返回一个使用javascript替换一些内容的部分视图(这意味着内容类型是'text/javascript')。

控制器的方法:

public ActionResult Search() 
{ 
    [Do Some Work] 
    return JsView("Index.js"); 
} 

JsView( “Index.js”)只是将内容类型设置为 'text/JavaScript的',并返回与被传递的参数一致的局部视图

形成SNIPPIT:

<div style="float:right;"> 
@using (Html.BeginRouteForm(ControllerActionName, SearchRouteValues, FormMethod.Get, new { id = "worklistSearch" })) 
{ 
    <input type="text" placeholder="Search Cases" id="SearchCriteria" name="SearchCriteria" value="" /> 
    <input class="search image-button no-text filter" value="Filter" id="worklist-search-button" /> 
    } 
</div> 

PS:我似乎需要做的按钮类型,以获得的形式使用回车键提交提交的。

我想知道如何使这项工作,使其正确呈现视图,并允许我点击提交按钮。

回答

0

根据您的描述,您似乎想要捕获表单的提交事件,然后将您的AJAX呼叫发送给您的控制器。如果这是你想要的,那么你需要防止传播提交事件,以便不发生POST。

使用jQuery,做这样的事情:

$("form").submit(function() { 
    // make AJAX submission to controller 
    // process JS returned from controller 

    // stop submit event from propagating 
    return false; 
});