2014-02-05 3 views
0

Form + Ajax -> Результаты по точному DIV 3 часа, 53 минут назад | LINKформы + Ajax не работает должным образом

Привет,

мне нужно визуализировать свою PartialView (результаты после того, как форма представление) в DIV.

У меня есть следующие файлы:

Посмотреть Man_por.cshtml

... 

<div class="col-md4" id="divTabPortfolios"> 

enter code [email protected]{Html.RenderAction("Load_portfoliosPartial","Management_portfolios");} 

<div> 

<div class="col-md4" id="divTabPortfolio"> 

<div> 

... 

Посмотреть Load_portfolios_partial

<script src="myscript.js" type="text/javascript"></script> 

.... 

... 

@using (@ Html.BeginForm()) 

{ 

.... 

... 

<button type="submit" class=".." value="Open"/> 

} 

сценария MyScript.js

$(function() { 
    $('form').submit(function() { 
     if ($(this).valid()) { 
      $.ajax({ 
       url: this.action, 
       type: this.method, 
       data: $(this).serialize(), 
       success: function (result) { 
        $('#divTabPortfolio').html(result); 
       } 
      }); 
     } 
     return false; 
    }); 
}); 

Когда он показывает результат, он открывает целую страницу, а не частичный вид (_layout.cshtml + Page) и т. Д. И не обновляет указанный DIV.

Как я могу решить эту проблему?

+0

Вы можете разместить обработанную HTML в дополнение или, а не код ASP? Предполагая, что проблема не связана с сервером, этот код не имеет значения, и что-то вроде бессмысленного для таких людей, как я, которые не кодируют в ASP. –

+0

Я не могу скопировать и вставить с сервера. Какую часть вы хотите видеть? –

+0

Нажмите Ctrl + U во время просмотра страницы. Это то, чего мы хотим. Убедитесь, что вы используете только соответствующий html и правильно отформатируете его. –

ответ

0

Использовать @using (Ajax.beginForm()) вместо @using (Html.beginForm().

MVC поддерживает формы Ajax из коробки.

Вы затем обеспечить действие, контроллер и селектор (UpdateTargetId устанавливаются на идентификатор панели для обновления), как это:

<div id="divTabPortfolio"> 
    @using (Ajax.BeginForm("SomeAction", "YourController", new { id = optionalParameters }, new AjaxOptions() { HttpMethod = "Post", UpdateTargetId = "divTabPortfolio" })) 
    { 
    } 
</div> 

Нет необходимости для собственного JQuery/Ajax для такого рода основного Ajax post-backs в MVC/Razor.

До тех пор, пока ваш метод действия возвращает PartialView, вам больше не нужно ничего делать.

Как было предложено, если вы могли бы разместить больше страницы, это поможет обеспечить специфические

+0

Извините, но я не понимаю следующих причин: 1) Мне нужно обновить другой раздел div относительно исходного раздела, где я вызову метод. (в вашем примере выше я вижу, что вы обновляете тот же div) 2) В чем преимущества использования Ajax.beginForm в отношении Html.beginForm? (Я считаю, что проблема связана с рендерингом). 3) Я не могу скопировать источник, потому что он находится на удаленном сервере, где у меня нет грантов. :( –

+0

Таким образом, как добавить анимацию во время вызова сервера на этом div? –

+0

1) Вы можете обновить любой div. Это не должно быть тот, у кого есть форма.Это может быть только одна кнопка/ссылка в форме, чтобы вызвать обновление панели. 2) 'Ajax.BeginForm' делает все Ajax async/update plumbing, которые вы делали вручную для вас. 'Html.BeginForm' просто создает стандартную форму обратной передачи. 3) Трудно дать хорошую помощь без лучшего примера. Возможно, вы захотите попробовать насмешливую страницу/проект, который сделает то, что вы хотите, и опубликуйте эти фрагменты. –

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