2012-06-04 4 views
2

Web Config:MVC Ajax.BeginForm InsertionMode

<add key="ClientValidationEnabled" value="true"/> 
<add key="UnobtrusiveJavaScriptEnabled" value="true"/> 

JavaScript ссылаются файлы:

<script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js") type="text/javascript"></script> 

CSHTML страница:

@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result", LoadingElementId = "progress", InsertionMode = InsertionMode.Replace })) 
{ 
    <div class="form"> 
     <div class="emailBox"> 
      <input id="email" name="email"> 
      <input type="submit" value="Join Us"> 
     </div> 

     <div id="result"> 
     </div> 
     <div id="progress" style="display:none;"> 
      <img src= "@Url.Content("~/Content/images/Ajax-loader-bar.gif") "> 
     </div> 
    </div> 
} 

Controller.cs:

[HttpPost] 
    public string Index(SignUpModel model) 
    { 
     return "Hello"; 
    } 

В чем причина, когда я нажимаю кнопку SUBMIT, вся страница заменяется белой страницей, на которой написано «привет». У меня создалось впечатление, что Ajax.BeginForm заменит содержимое DIV RESULT.

Что я делаю неправильно?

Кроме того, LoadElementID
Будет ли он скрываться автоматически, когда вызов AJAX вернет его значение?

=========================
ОТВЕТ
Firebug показал, что один из файлов ссылочной JS не был найден.
После того, как я исправил это, все работало, как ожидалось.

Спасибо, ребята

ответ

3

Убедитесь, что у вас есть jquery, Jquery.unobtrusive-ajax Файлы скриптов, добавленные на вашу страницу wh если вы используете Ajax.BeginForm. Кроме того, проверьте firebug (или любой инструмент отладчика) на наличие ошибок javascript, которые могут привести к сбою ajax и запуску полной почты после всей страницы. И да, элемент загрузки должен автоматически скрываться, когда возвращается результат ajax-сообщения.
Кроме того, убедитесь, что ваш web.config содержит следующие настройки

<appSettings> 
     <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 
+0

У меня есть Jquery и Jquery.unobtrusive-ajax. Где я могу найти файл Jquery.unobstrusive? –

+0

Обновлен Вопрос о том, какие файлы у меня есть. Где я могу найти недостающий файл? –

+0

Извините, я смешивал файл jquery-unobtrusive-validation. Но здесь это не требуется. –

1

1) Убедитесь, что вы включили запись в вашем заголовке

@using (Ajax.BeginForm(new AjaxOptions 
{ UpdateTargetId = "result", 
LoadingElementId = "progress", 
InsertionMode = InsertionMode.Replace, 
HttpMethod = "POST" })) 

2) Убедитесь, что вы включили все ссылки файлов JavaScript на странице

вместо возвращения привет попробуйте вернуться Просмотреть()

+0

В идеале я хочу возвращать различные сообщения, основанные на значении, обеспеченном на текстовом поле. –

+0

Я думаю, вы мирились с некоторыми справочными файлами –

+0

Проверьте мой вопрос с обновлением. Это мои текущие файлы. –

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