2013-09-26 5 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

Все еще вставляет всю страницу в это div –

+0

@ user2094494 Обновлен мой ответ. – asymptoticFault

+0

Я не знаю, существует ли проблема, но ненавязчивый javascript должен быть включен в web.config, а jquery.unobtrusive-ajax.js следует ссылаться на странице. –

Смежные вопросы