绑定前的内联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,如果它是真的不加载数据?

绑定前的内联c# if语句

这是来自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文件。

无论它的价值是什么,将视图像这样绑定到数据库模型并不是一个好的实践。您通常会有一个视图模型来将这两层相互抽象。