绑定前的内联C#if语句

时间:2016-09-09 14:14:24

标签: c# asp.net

我有一个由另一个用户创建的应用程序,我从未使用过他添加的功能,他似乎在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中的此删除列,如果它真的不加载数据?

1 个答案:

答案 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文件。

对于它的价值,将视图绑定到这样的数据库模型并不是一种好的做法。您通常会有一个视图模型来相互抽象两个层。