2013-09-26 130 views
0

Ajax表單確實更新了選定的div,但不是隻是重新加載該div中的局部視圖,而是將整個頁面內容插入到該div中。MVC使用Ajax.BeginForm更新局部視圖

.cshtml文件

<fieldset> 
    <legend>File(s)</legend>    
    <div id="filesBody"> 
     @Html.Action("Action", "Controller", new {id=Model.Id}) 
    </div> 
    <br /> 

    @using (Ajax.BeginForm("UploadFile", "Controller", null, new AjaxOptions {  UpdateTargetId="filesBody"}, new { enctype = "multipart/form-data", @id = "myForm" })) 
    { 
     @Html.HiddenFor(model => model.ComplaintId) 
     <div> 
      <label for="File">Add File:</label> 
      <input type="file" name="FileAttachment" /> 
      &nbsp;<input type="submit" value="Upload" /> 
      @Html.ValidationMessage("FileAttachment") 
     </div> 
    } 
</fieldset> 

控制器

public PartialViewResult GetFilesData(long? Id) 
{ 
    Model Model = new Model(Id); 
    TryUpdateModel(Model); 
    return PartialView(Model); 
} 

局部視圖

@model Models 
<div id="reloadField"> 
    @foreach (var ph in Model.docs) 
    { 
     ///code 
    } 
</div> 
+0

您的'Ajax.BeginForm'不應該針對'GetFilesData'操作嗎? – asymptoticFault

+0

謝謝!成功了! –

回答

3

在您的局部視圖設定的佈局等於空。

@model Models 
@{ 
    Layout = null; 
} 

UPDATE

更改Ajax.BeginForm調用GetFilesData行動。

+0

仍將整個頁面插入該區域 –

+0

@ user2094494更新了我的答案。 – asymptoticFault

+0

我不知道問題是否仍然存在,但應該在web.config中啓用不引人注意的JavaScript,並且應該在頁面上引用jquery.unobtrusive-ajax.js。 –