我在MVC 2.我想从我的代码后面调用一个JQuery函数(即来自Controller)......我的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相关部分......
&lt;%AjaxOptions ajaxOption = new AjaxOptions(); ajaxOption.UpdateTargetId =“TargetId”; 使用(Ajax.BeginForm(“Provide”,“Emp”,new {},ajaxOption,new {id =“EmpForm”})) { %GT; &lt;%using(Html.BeginForm(“Provide”,“Emp”)) {%GT;
&lt;%CurrentFormMode currentMode = new CurrentFormMode(); if(ViewData [“FormMode”]!= null) currentMode =(CurrentFormMode)ViewData [“FormMode”]; %GT; &lt;%EmpDetails empDetails = new EmpDetails(); if(ViewData.ContainsKey(“EmpDetails”)) empDetails =(EmpDetails)ViewData [“EmpDetails”]; %GT;
&lt;%if(!string.IsNullOrEmpty(Html.CelloValidationMessage(“SuccessMessage”))) {%&gt;
&lt;%}%&gt; &lt;%}%&gt;
如何做到这一点......
答案 0 :(得分:2)
后面的代码在服务器上运行。运行时,页面尚未交付给用户,并且尚未在浏览器中呈现。
这意味着当您无法访问jQuery代码时,因为它仅在客户端上运行。
即使它可以运行,您也无法使用document.getElementById
,因为它在网页中获取了一个尚未呈现的元素。
答案 1 :(得分:0)
如果我理解正确..用户正在执行某些操作,您希望在服务器上执行某些操作,然后更新进度条以指示用户发生了某些事情。
我认为你有几个选择。
使用jQuery帖子
您可以使用jQuery调用控制器操作,然后根据响应更新进度条。进度条更新回调函数将被置于“成功”(见下文)
$.ajax({
type: 'POST',
url: url,
data: data,
success: success
dataType: dataType
});
使用Ajax.BeginForm
您现在似乎正在使用PartialView。您可以使用Ajax表单,以便您可以提供在发布完成后调用的函数。 Ajax.BeginForm包含Success选项,您可以在其中提供Post成功完成时调用的函数。在该功能中,您可以更新进度条。
Here is an example如何使用Ajax.BeginForm
我希望这会给出一个如何实施正确解决方案的想法。