我们有一个包含大量逻辑检查的大项目。例如,当他们在此特定表单上单击“保存”时,它会执行大约3-4个不同的确认消息。应从后面的代码显示这些确认对话框。
有什么方法可以做到这一点? 我知道我可以使用ajax参数发送值,例如param = {areYouSure:“Yes”,还是删除契约:“否”,continueIfError:“是”}
有没有更有效的方法? 或者有没有办法直接从控制器调用代码?等待对话框结果,然后继续结果。
我们的项目中有SignalR,所以这就是我的想法:
public ActionResult controllerMethod()
{
var result = signalRHub.CallQuePopupTask(task, connectionID, CurrentUser);
if result == "yes" { ... }
else { return "don't activate" }
}
public static void CallQuePopupTask(Types.CallQuePopupTask task, string connectionID, User user)
{
var hub = GlobalHost.ConnectionManager.GetHubContext<signalRHub>();
// Will display a confirm dialog to client and wait for client to click yes or no
var dialogResult = hub.Clients.Client(connectionID).callQuePopupDialogResult();
return dialogResult;
}
答案 0 :(得分:4)
如果服务器需要处理这些检查,那么只需将数据传递给它即可。您只需要一些简单的AJAX和标准JavaScript确认对话框。例如,用户点击提交。您捕获表单提交事件并向处理第一次检查的操作发送AJAX调用。然后,该操作将执行检查并返回包含一些布尔值的JSON对象,或者告诉您用户是否需要确认某些内容的东西。如果是,则显示确认对话框并等待用户的响应。冲洗并重复其他检查。如果一切都很好和/或用户确认了所有内容,那么您最终会让表单正常提交。