Вызов JQuery из кода позади - любое другое решение - PullRequest
0 голосов
/ 25 января 2011

Я работаю в MVC 2. Я хочу вызвать функцию JQuery из моего кода (т. Е. Из контроллера) ... Моя функция JQuery ...

<script type="text/javascript">
$(function () {
    var a = document.getElementById("HidStatus").value;
    var b = parseInt(a);
    $("#progressbar").progressbar({
        value: b,
        max: 100
    });
});

<div id="progressbar" style="height: 8px; float: left; padding: .3%; margin-right: 274px;
                        margin-left: 160px; width: 350px;">
                    </div>
                    <div id="Div1" style="float: left; margin-left: 300px; margin-right: 100px; font-weight: bold">
                        <%= Html.Hidden("HidStatus", (double)ViewData["StatusBar"])%>
                        <%= Html.Label("Status - " + Convert.ToString(ViewData["StatusBar"] + "% Completed"))%>
                    </div>

Я должен назвать это в моем контроллере. Мой контроллер будет ...

  [AcceptVerbs(HttpVerbs.Post)]
   public ActionResult ProvideDetails(FormCollection formCollection)
  {       
    //Here i should call the JQuery Function
     return PartialView("Details", empDetails);
  }

Это моя часть, связанная с Ajax ...

<% AjaxOptions ajaxOption = new AjaxOptions (); ajaxOption.UpdateTargetId = "TargetId"; using (Ajax.BeginForm ("Обеспечить", "Emp", new {}, ajaxOption, new {id = "EmpForm"})) { %> <% using (Html.BeginForm ("Обеспечить", "Emp")) {%>

<% CurrentFormMode currentMode = new CurrentFormMode (); if (ViewData ["FormMode"]! = null) currentMode = (CurrentFormMode) ViewData ["FormMode"]; %> <% EmpDetails empDetails = new EmpDetails (); if (ViewData.ContainsKey ("EmpDetails")) empDetails = (EmpDetails) ViewData ["EmpDetails"]; %>

<% if (! String.IsNullOrEmpty (Html.CelloValidationMessage ("SuccessMessage"))) {%>

<%}%> <%}%>

Как это сделать ....

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Код позади запускается на сервере.Когда она запускается, страница еще не была доставлена ​​пользователю и не отображалась в его браузере.

Это означает, что когда вы не можете получить доступ к коду jQuery, поскольку он запускается только на клиенте.

Даже если он может быть запущен, вы не сможете использовать document.getElementById, поскольку он получает элемент на веб-странице, который еще не отображен.

0 голосов
/ 25 января 2011

Если я правильно понимаю ... Пользователь выполняет какое-то действие, вы хотите что-то сделать на сервере, а затем обновить индикатор выполнения, чтобы дать пользователю понять, что что-то произошло.

Я думаю, у вас есть несколько вариантов.

Использование jQuery post

Вы можете вызвать действие контроллера с помощью jQuery, а затем обновить индикатор выполнения в соответствии с ответом. Функция обратного вызова обновления индикатора выполнения будет помещена в «success» (см. Ниже)

$.ajax({
   type: 'POST',
   url: url,
   data: data,
   success: success
   dataType: dataType
});

См. Документация по jQuery API

Использование Ajax.BeginForm

Похоже, вы сейчас используете PartialView. Вы можете использовать форму Ajax, чтобы предоставить функцию, которая вызывается после завершения публикации. Ajax.BeginForm содержит опцию Success, где вы можете указать функцию, которая вызывается при успешном завершении публикации. В этой функции вы можете обновить свой индикатор выполнения.

Вот пример как использовать Ajax.BeginForm

Я надеюсь, что это даст представление о том, как реализовать правильное решение.

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