可以在Controller中显示模态对话框。
例如:
[HttpPost]
public ActionResult Index(int contractType )
{
if (contractType == 0 )
{
return "SHOW MODALDIALOG BOX" with button "YES" and "NO" when click "YES" Refirect to nexe page, click "NO" stay in current page
}
else
{
return View();
}
}
感谢答案
答案 0 :(得分:4)
从控制器(服务器),您无法显示弹出窗口。 您可以做的是返回视图...带有一些标志,让VIEW显示一个javascript模式对话框。
其他选项是返回JSON而不是视图...并使用JS创建模式对话框。 然后......在clic YES上,您可以使用不同的参数调用相同的Controller操作(在您的情况下,使用不同的' 0'),这次显示视图。
示例:强>
[HttpPost]
public ActionResult Registering( )
{
string RetResult = new UserPermission().ValidateUser( Request["username"].ToString(), Request["password"].ToString() );
if (!string.IsNullOrEmpty(RetResult)){
ViewBag.MyErrorMessage = RetResult;
return View(); //This will show the view named "Registering", but you can display any other.
//The ideal is display the same one where the user entered the user/pass.
}
else {
return RedirectToAction("Index", "EvalMain");
}
}
在您的视图中
@if(ViewBag.MyErrorMessage != null){
//Display the error message
//You can: display it in a div (without popup), you can show a javascript Alert(), or display a modal dialog.
}
要将其显示为DIV,只需执行以下操作:
<div>@ViewBag.MyErrorMessage </div>
显示提醒():
<script> alert(@ViewBag.MyErrorMessage);</script>
要显示模态对话框,您可以使用jQueryUI:http://jqueryui.com/dialog/ 或多或少这样的事情:
<div id="dialog" title="Error Registering">
<p>@ViewBag.MyErrorMessage</p>
</div>
<script>
$(function() {
$("#dialog").dialog();
});
</script>
答案 1 :(得分:0)
感谢您的回答。这个想法非常简单。我正在运行eMemberShip WCF服务,它接受ussername和密码并返回用户角色和权限。 如果用户名或密码不正确,服务返回错误字符串,而不是我希望显示带有此错误字符串的ModalDialog,如果没有,则重定向其他页面。
[HttpPost]
public ActionResult Registering( )
{
string RetResult = new UserPermission().ValidateUser( Request["username"].ToString(), Request["password"].ToString() );
if (!string.IsNullOrEmpty(RetResult))
return this.ModalDialog(RetResult);
else
return RedirectToAction("Index", "EvalMain");
}