绑定前的内联c# if语句
本文关键字:if 语句 绑定 | 更新日期: 2023-09-27 18:06:18
我有一个由另一个用户创建的应用程序,我从来没有使用过他添加的功能,他似乎在ASPX文档中使用c#来绑定表中的数据。
下面是他绑定数据的代码:
<table class="device_edit_device_table">
<tr>
<th><%: Resources.UserEditUserControlDevicesSerialNumber %></th>
<th><%: Resources.UserEditUserControlDevicesCountry %></th>
<th><%: Resources.UserEditUserControlDevicesSoftwareVersion %></th>
<th><%: Resources.UserEditUserControlDevicesPlatform %></th>
<th><%: Resources.UserEditUserControlDevicesCompany %></th>
<th><%: Resources.UserEditUserControlDevicesPurchaseDate %></th>
<th><%: Resources.UserEditUserControlDevicesPurchaseLocation %></th>
<th><%: Resources.UserEditUserControlDevicesRegistrationDate %></th>
<th><%: Resources.UserEditUserControlDevicesDeviceType %></th>
<th><%: Resources.UserEditUserControlDevicesPreOwned %></th>
<th>Lost</th>
<th>Stolen</th>
<th style="width:200px">Admin Comments</th>
<th>Edit Device</th>
<th>Edit Device Registration</th>
<th>De-register Device</th>
</tr>
<tr>
<td><%: Model.Unit.SerialNumber ?? string.Empty %></td>
<td><%: Model.Unit.UnitCountry.Country ?? string.Empty%></td>
<td><%: Model.Unit.UnitSoftwareVersion.Version ?? string.Empty%></td>
<td><%: Model.Unit.UnitPlatform.Name ?? string.Empty%></td>
<td><%: Model.Unit.UnitCompany.Name ?? string.Empty%></td>
<td><%: Model.PurchaseDate.ToString() %></td>
<td><%: Model.PurchaseLocation ?? string.Empty%></td>
<td><%: Model.RegistrationDate.ToShortDateString()%></td>
<td><%: Model.Unit.UnitBundle.Bundle %></td>
<td><%: Model.Unit.IsSecondHand ? Resources.UserEditUserControlDevicesPreOwnedYes : Resources.UserEditUserControlDevicesPreOwnedNo %></td>
<td><%: Model.Unit.Lost ?? false ? "Yes" : "No"%></td>
<td><%: Model.Unit.Stolen ?? false ? "Yes" : "No"%></td>
<td style="width:200px"><%: Model.Unit.Comments%></td>
<td><%: Html.ActionLink("Edit Device", "Edit", "Unit", new { id = Model.SerialID, redirectTo = "DeviceDetailsPage" }, null)%></td>
<td><%: Html.ActionLink("Edit Device Registraion", "Edit", "Registration", new { id = Model.RegistationID, redirectTo = "DeviceDetailsPage" }, null)%></td>
<td><%: Html.ActionLink("De-register", "Deregister", "Device", new { id = Model.RegistationID }, null)%></td>
</tr>
现在这个页面有Inherits="System.Web.Mvc.ViewPage<Satmap.RouteShare.Web.Models.DeviceRegistration>"
,但我似乎找不到DeviceRegistration
类,这就是为什么我认为它指向一个数据库表。
我最近添加了列到数据库'已删除',如果这是真的,我不希望那一行数据被绑定。无论如何,我可以检查这个删除列在DeviceRegistration
,如果它是真的不加载数据?
这是来自MVC 2或以下版本的Razor语法。您可以使用Linq向它添加if子句,例如:
<%: if(!Model.Removed) { %>
<tr>
<td><%: Model.Unit.SerialNumber ?? string.Empty %></td>
<td><%: Model.Unit.UnitCountry.Country ?? string.Empty%></td>
<td><%: Model.Unit.UnitSoftwareVersion.Version ?? string.Empty%></td>
<td><%: Model.Unit.UnitPlatform.Name ?? string.Empty%></td>
<td><%: Model.Unit.UnitCompany.Name ?? string.Empty%></td>
<td><%: Model.PurchaseDate.ToString() %></td>
<td><%: Model.PurchaseLocation ?? string.Empty%></td>
<td><%: Model.RegistrationDate.ToShortDateString()%></td>
<td><%: Model.Unit.UnitBundle.Bundle %></td>
<td><%: Model.Unit.IsSecondHand ? Resources.UserEditUserControlDevicesPreOwnedYes : Resources.UserEditUserControlDevicesPreOwnedNo %></td>
<td><%: Model.Unit.Lost ?? false ? "Yes" : "No"%></td>
<td><%: Model.Unit.Stolen ?? false ? "Yes" : "No"%></td>
<td style="width:200px"><%: Model.Unit.Comments%></td>
<td><%: Html.ActionLink("Edit Device", "Edit", "Unit", new { id = Model.SerialID, redirectTo = "DeviceDetailsPage" }, null)%></td>
<td><%: Html.ActionLink("Edit Device Registraion", "Edit", "Registration", new { id = Model.RegistationID, redirectTo = "DeviceDetailsPage" }, null)%></td>
<td><%: Html.ActionLink("De-register", "Deregister", "Device", new { id = Model.RegistationID }, null)%></td>
</tr>
<%: } %>
如果您向数据库添加了一列,那么您需要更新模型以包含该列"Removed"。我猜这是数据库优先的实体框架,所以查找如何从Db更新edmx文件。
无论它的价值是什么,将视图像这样绑定到数据库模型并不是一个好的实践。您通常会有一个视图模型来将这两层相互抽象。