Hi.. I am using azure cosmosdb database. I am displaying webpage using Cosmosdb data and c# MVC web application. This time database json filr have DateTime as subitem in Json. I need to compare it with current datetime to flag signal on view page. Please find attached source code.
I am getting error:
Object reference not set to an instance of an object.
I get error:
Cannot implicitly convert type 'System.Web.Mvc.MvcHtmlString' to 'System.DateTime' if I use " DateTime myday = Html.DisplayFor(modelItem => item.LastContact.Ping);"
Can anybody help please.
My code is as follows:
JSON:
- "DataTypeId": 1,
- "IPaddress": "192.168.2.177",
- "id": "d1b81653-b7a5-4d79-85ea-79c01f43f747",
- "PhoneNo": "0417518324",
- "LastContact": {
- "EnvLog": "2019-09-07T19:41:08",
- "Ping": "2020-01-09T12:10:09",
- "SpdLog": "2019-09-07T19:41:08"
- },
- "SpeedLog": true,
- "DeviceModelId": 2,
- "DisconnectEvents": 9,
Model:
- public class DeviceMap
- {
-
- [JsonProperty(PropertyName = "id")]
- public string Id { get; set; }
-
- [JsonProperty(PropertyName = "IPaddress")]
- public string IPaddress { get; set; }
-
- [JsonProperty(PropertyName = "SpeedLog")]
- public bool SpeedLog { get; set; }
-
- [JsonProperty(PropertyName = "LastContact")]
- public Entry LastContact { get; set; }
- }
-
- public class Entry
- {
-
- [JsonProperty(PropertyName = "EnvLog")]
- public DateTime EnvLogtime { get; set; }
-
- [JsonProperty(PropertyName = "Ping")]
- public DateTime Ping { get; set; }
-
- [JsonProperty(PropertyName = "SpdLog")]
- public DateTime SpdLog { get; set; }
- }
- }
Controller:
- public class DeviceMapController : Controller
- {
- [ActionName("Index")]
- public async Task<ActionResult> Map1Async()
- {
- string empty = "Unknown";
- var items = await DocumentDBRepository<DeviceMap>.GetMap1Async(d => d.Id != null, d => d.Lat != empty);
- if (Convert.ToInt32(User.GroupId()) != 200)
- {
- items = items.Where(d => d.GroupId == Convert.ToInt32(User.GroupId()));
- }
- return View(items);
- }
- }
View:
- @foreach (var item in Model)
- {
- if ((@item.IPaddress == "192.168.2.14") || (@item.IPaddress == "192.168.2.13") || (@item.IPaddress == "192.168.2.15") || (@item.IPaddress == "192.168.2.16")) { }
- else
- {
-
- string siteId = null;
- string newsiteId = null;
- if (item.IPaddress != "0")
- {
- int index = item.IPaddress.IndexOf('.') + 1;
- int space = item.IPaddress.IndexOf('.', index + 1);
- int space2 = item.IPaddress.IndexOf('.', space + 1);
- int end = item.IPaddress.Length;
- if (index > 0) { siteId = item.IPaddress.Substring(space + 1, end - space - 1); newsiteId = siteId.Replace('.', '-'); }
- }
-
-
- DateTime myday =Html.DisplayFor(modelItem => item.LastContact.Ping);
- DateTime now = DateTime.Now;
- DateTime yesterday = now.AddDays(-7);
- DateTime d;
-
-
-
- string a = @item.Name;
- <tr>
- <td>
- @if (a.Length > 50) { a = a.Substring(0, 50); }
- @if (item.GroupId != 82)
- {
- if (myday <= DateTime.Now.AddDays(-7))
- {<h4>@myday</h4>
- <img src="/Content/Images/trafficlight-red2.png" width="20" height="20"><a href="@Url.Action("DevicePage", "Device", new { item.DeviceId })"><h6>@a..</h6></a>
- }
- else
- {<img src="/Content/Images/trafficlight-green1.png" width="20" height="20"><a href="@Url.Action("DevicePage", "Device", new { item.DeviceId })"><h6>@a..</h6></a>
- }
- }
- else
- {
- if (myday <= DateTime.Now.AddDays(-7))
- {
- <img src="/Content/Images/trafficlight-red2.png" width="20" height="20"><a href="@Url.Action("Form", "TARP", new { item.DeviceId })"><h6>@a..</h6></a>
- }
- else
- {<img src="/Content/Images/trafficlight-green1.png" width="20" height="20"><a href="@Url.Action("Form", "TARP", new { item.DeviceId })"><h6>@a..</h6></a>
- }
- }
- @if (item.IPaddress != "0")
- {<p>Site Id: @newsiteId;</p>}
- @if (item.LastPing != null)
- {
- <p>
- Last Contact: @Html.DisplayFor(modelItem => item.LastContact.Ping), @Html.DisplayFor(modelItem => item.BatVoltage)V
- </p>}