我如何使用 SignalR 和 ASP.NET Core MVC 从控制器的前端请求一些东西

How can I ask for something from frontend in controller using SignalR and ASP.NET Core MVC

在我的管理汽车控制器中,我有一个操作方法

ParkCar(licenseplate, latitude, longitude)

在我按下前端按钮后调用。当我按下该按钮时,会发送一个 ajax 请求,其中包含我的当前位置和我要停放的选定汽车。

当动作开始时运行我想检查一些关于位置的信息(例如:如果附近有很多车)发送并在前端发送并显示一个带有消息的表单:

Are you sure you want to park here?

在前端回答问题后,我想在我的控制器的操作中捕获该答案并恢复它并在用户想要的情况下停放汽车,或者在用户不想要的情况下发送失败的尝试。

我想获得这样的东西:

public IActionResult ParkCar(string licenseplate,double lat,double lng)
{
    var car = _carsService.GetCarByLicensePlate(licenseplate);

    // Check how many cars are nearby (1km)
    // If there are too many cars... Send a message to frotend: "Are you sure you want to park here?
    // get the message from frontend

    // if the message sent by user is YES
    _carsService.ParkCar(car, lat, lng);
    _carsService.FindAndAssignCityToCar(car);

    return Ok("Car parked successfully!");

    // else return failed 
}

编辑:我忘了说我想严格使用 SignalR。

如果您想在您的应用程序中使用 SignalR 实现实时客户端到服务器和服务器到客户端通信,您可以参考此文档根据您的实际情况创建集线器和集线器方法要求和场景。

https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-5.0#create-and-use-hubs

然后您可以在相应的视图页面中实现 SignalR JavaScript 客户端代码,并连接到您的中心服务器并在您的代码逻辑中调用中心方法。

https://docs.microsoft.com/en-us/aspnet/core/signalr/javascript-client?view=aspnetcore-5.0

How can I ask for something from frontend in controller using SignalR and ASP.NET Core MVC

根据您的 ParkCar 操作方法的代码,我们可以发现您调用 _carsService 方法来执行业务逻辑,因此您可以在 hub 方法中注入相同的服务并执行相同的代码集线器方法中的逻辑。