MVC使用Ajax.BeginForm更新部分视图

时间:2013-09-26 18:28:57

标签: ajax asp.net-mvc asp.net-mvc-4

Ajax表单会更新所选的div,但不是只重新加载该div中的部分视图,而是将整个页面内容插入到该div中。

.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>

1 个答案:

答案 0 :(得分:3)

在局部视图中,将布局设置为null。

@model Models
@{
    Layout = null;
}

<强>更新

更改Ajax.BeginForm以调用GetFilesData操作。