我需要从控制器中的操作方法打开弹出窗口。动作方法基本上是注册用户。
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
//------------------------------------------
//I need to call a jquery function from here
//------------------------------------------
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", ErrorCodeToString(createStatus));
}
}
return View(model);
}
视图中出现的jquery函数只会创建一个隐藏的DIV,可见,并设置不透明度等,以表示弹出窗口。
我需要从上面显示的控制器的action方法中调用这样的jquery函数。
答案 0 :(得分:2)
您无法从服务器调用客户端脚本。但是,您可以在服务器端设置客户端可以查看的指标,以确定其操作。
我会在名为ShowModalPopup的模型中设置一个bool,当createStatus == MembershipCreateStatus.Success时,将该bool设置为true。
现在,在您的观点中,写出指标:
@Html.HiddenFor(model => model.ShowModalPopup, new { id = "_showModalPopup" }) //add the id attribute for added performace
并在你的jquery中:
$(document).ready(function()
{
if($('#_showModalPopup').val() == 'true')
{
//call your jquery modal popup method
}
});
答案 1 :(得分:0)
我不是dotnet技术的专家。 在我看来,服务器端脚本和客户端脚本应该是分开的。
因为javascript jquery是客户端而dotnet是服务器端。
服务器将处理请求并处理服务器脚本然后将输出发送到用户浏览器,然后只有jquery函数发生在用户端。
基本上对于需要在客户端浏览器执行的任何内容,我会将它们全部放在视图中(html)。 他们可能需要使用脚本标记在html中运行jquery和javascript。
<script type="text/javascript">
jQuery(function(){
//call your function here
});
</script>
我不确定我是否在帮助或者我不理解这个问题。对不起