2011-01-25 54 views
0

我在MVC 2。我的工作要身后从我的代码中调用一个jQuery功能(即从控制器)...我的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 =新AjaxOptions(); ajaxOption.UpdateTargetId = “目标ID”; (“Provide”,“Emp”,new {},ajaxOption,new {id =“EmpForm”}) %> <%使用(Html.BeginForm(“Provide” ()“)) {%>

<%CurrentFormMode currentMode = new CurrentFormMode(); 如果(计算机[ “FormMode”]!= NULL) CURRENTMODE =(CurrentFormMode)计算机[ “FormMode”]; %> <%EmpDetails empDetails =新EmpDetails(); (ViewData.ContainsKey(“EmpDetails”)) empDetails =(EmpDetails)ViewData [“EmpDetails”]; %>

如果

<%(!string.IsNullOrEmpty(Html.CelloValidationMessage( “SuccessMessage”))){ %>

<%}%> <%}%>

如何做到这一点....

回答

0

如果我理解正确..用户正在做一些操作,你想在服务器上做一些事情,然后更新进度条,以指示用户发生了什么事情。

我认为你有几个选项。

使用jQuery后

你可以使用jQuery呼叫控制器动作,然后根据响应更新进度条。进度条更新回调函数将被放置到 '成功'(见下文)

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

jQuery API documentation

使用Ajax.BeginForm

看来你现在使用PartialView。您可以使用Ajax表单,以便您可以提供在完成发布后调用的函数。 Ajax.BeginForm包含成功选项,您可以在Post成功完成时为其提供函数调用。在这个功能中,你可以更新你的进度条。

Here is an example如何使用Ajax.BeginForm

我希望这会给一个想法如何落实妥善解决。

+0

你的理解是正确的。在你的第一个解决方案中,我应该在哪里打电话给我的进度条脚本...?请解释我在详细... – RobinHood 2011-01-25 08:42:42

2

后面的代码在服务器上运行。当它运行时,页面尚未交付给用户,并没有在自己的浏览器中被渲染。

这意味着当你无法访问jQuery代码,因为它只在客户端运行。

即使它可以运行,也不能使用document.getElementById,因为它在网页中获取尚未呈现的元素。

+0

谢谢..但是,我想要的是,我正在进步酒吧概念。一旦我保存数据,进度条消失。我想保留进度条在同一页...“我已经更新了我的上述代码” – RobinHood 2011-01-25 05:21:50

相关问题