我有一个由另一个用户创建的应用程序,我从未使用过他添加的功能,他似乎在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
,这就是我认为它指向数据库表的原因。
我最近在数据库'Removed'中添加了列,如果这是真的,我不希望绑定这一行数据。无论如何,我可以检查DeviceRegistration
中的此删除列,如果它真的不加载数据?
答案 0 :(得分:1)
这是Razor语法,来自MVC 2或更低版本。你可以使用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>
<%: } %>
如果您向数据库添加了一列,那么您需要更新模型以包含该列“已删除”。我猜它是数据库优先的实体框架,所以查找如何从Db更新edmx文件。
对于它的价值,将视图绑定到这样的数据库模型并不是一种好的做法。您通常会有一个视图模型来相互抽象两个层。