2011-10-31 81 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; 
});