【发布时间】: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