2015-04-29 4 views
2

Как предотвратить перезагрузку страницы при отправке формы на частичный просмотр? Есть много примеров, но кажется, что они не работают для меня. Это то, что у меня есть. Частичный вид (Razor), который называет это:Предотвратить перезагрузку Ajax.BeginForm

@using (Ajax.BeginForm("SaveReply", "Home", null, new AjaxOptions { HttpMethod = "Post" }, new { target = "_self" })) 
{ 
    <div class="input-group wall-comment-reply" style="width:100%"> 
     @Html.Hidden("eventid", @item.EventID) 
     <input name="txtReply" type="text" class="form-control" placeholder="Type your message here..."> 
     <span class="input-group-btn"> 
      <button class="btn btn-primary" id="btn-chat" type="submit"> 
       <i class="fa fa-reply"></i> Reply 
      </button> 
     </span> 
    </div> 
} 

Тогда у меня есть метод действия в контроллере:

[HttpPost] 
public void SaveReply(string txtReply, string eventid) 
{ 
    //some code 

} 

Действие контроллера срабатывает, но после того, что он автоматически перенаправлены на локальный/дома/SaveReply

Возможно, проблема в том, что это частичное представление отображается из строки. Я взял код из:

How to render a Razor View to a string in ASP.NET MVC 3?

amongs также другие вещи, я попытался это:

http://geekswithblogs.net/blachniet/archive/2011/08/03/walkthrough-updating-partial-views-with-unobtrusive-ajax-in-mvc-3.aspx

Я был бы признателен за любую помощь.

+0

попробуйте использовать перегруз без 'routeValues', так как вы их не используете. то есть удалите параметр «null» в 'Ajax.BeginForm' – DLeh

ответ

4

Я нашел проблему.

Кажется, что вам нужно ссылаться на ненавязчивые сценарии. Просто установите их NuGet:

Install-Package Microsoft.jQuery.Unobtrusive.Ajax

А затем ссылаться на него из представления, который вызывает частичный вид:

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 

И miraculosly он работает без каких-либо другие изменения. Дополнительные объяснения можно найти здесь:

[Why does Ajax.BeginForm replace my whole page?

и здесь:.

[Why UnobtrusiveJavaScriptEnabled = true disable my ajax to work?

кажется, что вы должны использовать его, если вы используете Ajax * Помощники в MVC 3 и выше.

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

  • Нет связанных вопросов^_^