2014-03-13 64 views
3

我想在用戶更改我的下拉列表的當前值時更新局部視圖。MVC更新局部視圖onchange下拉列表

隨着我onchange提交,部分視圖不會加載在div中,而是替換整個頁面。 我該如何解決它?

觀點:

@using (Ajax.BeginForm("GetEnvironment", new RouteValueDictionary { { "Environment", Model.Environnements } }, new AjaxOptions() { UpdateTargetId = "ExportDiv" })) 
{ 
    @Html.DropDownListForEnum(x => x.Environnements, new { onchange = "this.form.submit();" }) 
} 

    <div id="ExportDiv"> 
     @Html.Partial("Export") 
    </div> 

控制器:

public PartialViewResult GetEnvironment(ExampleDto model) 
    { 
     return PartialView("Export", model); 
    } 

Export.cshtml

+0

你可以使用jQuery嗎? –

+0

是的,我可以使用jQuery。 – user3391714

+0

你確定你的解決方案中有'jquery.unobtrusive-ajax.js'嗎?對於沒有這個文件的我來說'ajax.Beginform'就像正常形式一樣。 – szpic

回答

1

它看起來像triggering submit on the form causes whole page to be posted,而不是AJAX行爲。試試這個:

@using (Ajax.BeginForm("GetEnvironment", new RouteValueDictionary { { "Environment", Model.Environnements } }, new AjaxOptions() { UpdateTargetId = "ExportDiv" },new {id = "ajaxForm")) 
{ 
    @Html.DropDownListForEnum(x => x.Environnements, new { onchange = "submitAjaxForm()" }) 
} 

<div id="ExportDiv"> 
    @Html.Partial("Export") 
</div> 

<script type="text/javascript"> 
    $('form#ajaxForm').submit(function(event) { 
     eval($(this).attr('onsubmit')); return false; 
    }); 

    window.submitAjaxForm = function(){ 
     $('form#ajaxForm').submit(); 
    } 
</script> 

你需要,如果你用它來包括在thier自己的部分腳本。

0

結果應該與Ufuk建議的結果相同,但是您是否嘗試簡單地添加return false;this.form.submit();