【问题标题】:In mvc application how can I show message one by one like notification?在 mvc 应用程序中,如何像通知一样一一显示消息?
【发布时间】:2018-10-17 07:22:01
【问题描述】:

我有一个 MVC 应用程序,我正在使用 foreach 循环将设备注册到 IOT。

我想在一台设备完成注册后一一显示消息。如何在视图上显示消息?

控制器方法中的代码-

    foreach (var deviceId in collection)
    {
        try
        {
            // save device information into database
            Models.Device newDevice = new Models.Device()
            {
                Id = Guid.NewGuid(),
                Device = deviceId
            };

            _deviceRepository.InsertDevice(newDevice);
            _deviceRepository.Save();

        }
        catch (DeviceAlreadyExistsException)
        {
            device = await registryManager.GetDeviceAsync(deviceId);
            ViewBag.Message = "device already present";
        }
    }

}
catch (Exception ex)
{
    ViewBag.Message = "Error";
    throw ex;
}
ViewBag.Message = "device register successfully - " + deviceId;
return View("Index")

如何在视图或部分视图中一一显示ViewBag.Message

如果发生错误,它将显示错误消息。 如果成功则一一通知我们必须显示messagessuccess消息。

例如我有 10 个项目,那么 foreach 将运行 10 次,每次设备成功后我们需要在 UI 上显示一条消息:

device register successfully device1

device register successfully device2 等等...

我知道 ViewBag 没有用,我可以采取什么方法?

【问题讨论】:

  • 你能解释一下你想要“一条一条地显示 10 条消息”吗?注意ViewBag 的内容是同时发送给查看的,可能你需要使用客户端技巧。
  • 是的,我想我需要在这里使用一些 js 代码。当我点击按钮时,它将执行此代码,并且在每次成功执行 foreach 后,我想在 UI 上显示消息,就像这个设备成功注册如果有 10 项 foreach 将执行 10 次
  • 你的意思是如果某个用户做了注册另一个用户之类的任何操作,向每个用户发送通知?
  • 没有,当使用 foreach 将消息保存到数据库时,我只需要显示消息,例如设备已在 UI 上注册。更新的问题,包含更多详细说明
  • 如果您希望根据您的编辑输出,则将 ViewBag.Message 初始化为空 string 并附加消息,例如ViewBag.Message += string.Format("Device {0} successfully registered", i + 1)(并使用 for 循环)

标签: c# .net asp.net-mvc model-view-controller


【解决方案1】:

我认为您需要对这种行为采取不同的方法。

考虑使用 signalR,以便在服务器端操作发生时与客户端视图进行通信。

您可以使用它来显示进度加载栏,或在设备注册时提供反馈。

【讨论】:

    猜你喜欢
    • 2011-07-02
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    相关资源
    最近更新 更多