C# 使用MVC从CodeBehind显示确认对话框

C# 使用MVC从CodeBehind显示确认对话框,c#,jquery,asp.net-mvc,signalr,C#,Jquery,Asp.net Mvc,Signalr,我们有一个大项目,有很多逻辑检查。例如,当他们在这个特定表单上单击“保存”时,它会显示3-4条不同的确认消息。这些确认对话框应在代码后面显示 有哪些方法可以做到这一点? 我知道我可以使用ajax参数发送值,比如param={areYouSure:“Yes”,alsoDeleteContract:“No”,ContinueIferor:“Yes”} 有没有更有效的方法? 或者有没有办法直接从控制器调用代码?等待对话框结果,然后继续处理结果 我们的项目中有信号员,所以这就是我的想法: public

我们有一个大项目,有很多逻辑检查。例如,当他们在这个特定表单上单击“保存”时,它会显示3-4条不同的确认消息。这些确认对话框应在代码后面显示

有哪些方法可以做到这一点? 我知道我可以使用ajax参数发送值,比如param={areYouSure:“Yes”,alsoDeleteContract:“No”,ContinueIferor:“Yes”}

有没有更有效的方法? 或者有没有办法直接从控制器调用代码?等待对话框结果,然后继续处理结果

我们的项目中有信号员,所以这就是我的想法:

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;
}
公共行动结果控制方法()
{
var result=signalHub.CallQuePopupTask(任务、连接ID、当前用户);
如果结果=“是”{…}
否则{返回“不激活”}
}
公共静态void CallQuePopupTask(Types.CallQuePopupTask任务,字符串connectionID,用户)
{
var hub=GlobalHost.ConnectionManager.GetHubContext();
//将向客户端显示确认对话框,并等待客户端单击是或否
var dialogResult=hub.Clients.Client(connectionID.callQuePopupDialogResult();
返回对话框结果;
}

如果服务器需要处理这些检查,那么只需将数据传递给它,让它自己处理即可。您只需要一些简单的AJAX和标准JavaScript确认对话框。例如,用户点击submit。捕获表单提交事件并向处理第一次检查的操作发送AJAX调用。然后,该操作将执行检查并返回一个JSON对象,该对象包含一些布尔值或告诉您用户是否需要确认某些内容的内容。如果是,则显示确认对话框并等待用户的响应。冲洗并重复其他检查。如果一切正常,并且/或者用户已经确认了一切,那么您最终会让表单正常提交。

如果服务器需要处理这些检查,那么只需将数据传递给它,让它自己处理即可。您只需要一些简单的AJAX和标准JavaScript确认对话框。例如,用户点击submit。捕获表单提交事件并向处理第一次检查的操作发送AJAX调用。然后,该操作将执行检查并返回一个JSON对象,该对象包含一些布尔值或告诉您用户是否需要确认某些内容的内容。如果是,则显示确认对话框并等待用户的响应。冲洗并重复其他检查。如果一切正常,并且/或者用户已经确认了一切,那么您最终会让表单正常提交。

如果这是一个web项目,为什么不使用带有确认框的Javascript?因为Javascript无法完成复杂的逻辑检查。例如,调用实体服务,验证实体,并显示类似“此实体可能没有您的设备,是否仍要使用此设备?”的内容,您应该能够简单地在前端代码上附加
确认
。然后当你点击yes时,它实际上会按它应该的方式点击控制器。是的,Greg,但是记住有3-4个对话框。这包括复杂的检查。请看我前面的评论中的一个例子,然后你应该做适当的视图数据抽象。对于每个UI更改,控制器应该在加载另一个视图之前执行逻辑。如果这是一个web项目,为什么不使用带有确认框的Javascript?因为Javascript无法完成复杂的逻辑检查。例如,调用实体服务,验证实体,并显示类似“此实体可能没有您的设备,是否仍要使用此设备?”的内容,您应该能够简单地在前端代码上附加
确认
。然后当你点击yes时,它实际上会按它应该的方式点击控制器。是的,Greg,但是记住有3-4个对话框。这包括复杂的检查。请看我前面的评论中的一个例子,然后你应该做适当的视图数据抽象。对于每个UI更改,控制器应该在加载另一个视图之前执行逻辑。否则你就要与MVC的无状态前提作斗争。是的,我知道这种方法。我想没有别的选择了。是的,我知道这个方法。我想没有别的选择了。