2013-03-13 76 views
0

我有以下视图,如果POnumber为空,它将返回一些文本。 我想我需要有而不是if(Model.Invoice.PONumber == null)是一个检查机制(可能多个if语句),将检查字段LineNumber,Description,UnitOfMeasure,QtyOrdered,如果它们中的任何一个是它将用N/A或空白空间替换它,但它仍然允许用户查看其余可用信息。 你有什么要求吗?我是MVC的新手,任何帮助都会有所帮助。MVC3 ASP在视图中用空白空间替换空值

预先感谢您的时间和帮助下,鲍比

<div class="contentWrapper2"> 
    <div class="content2"> 
     <div class="clr lfl w100"> 
      <h1>Invoice Detail</h1> 
      <div class="return-btn"> 
       <a class="btn btnStyleC btn-back-invoice" href="@Url.Action("InvoiceHistory", "Account")"> 
        Back to Invoice List</a> 
      </div> 
     </div> 
     @if (Model.ErpError.Length > 0) 
     { 
      <div class="clr lfl w100 error"> 
       @Html.Raw(Model.ErpError) 
      </div> 
     } 
     else 
     { 
      if(Model.Invoice.PONumber == null) 
      { 
       <div class="lfl w100 clr messaging"> 
        <p>No information available at the moment for current invoice. 
         Please call our sales department for further assistance. 
        </p> 
       </div> 
      } 
      else 
      { 
       <div class="clr lfl w100"> 
        <div class="order-number-date"> 
         <table> 
          <tr> 
           <th class="col-1"> 
            <h3>Invoice #:</h3> 
           </th> 
           <td class="col-2"> 
            <h3>@Model.Invoice.InvoiceNumber</h3> 
           </td> 
          </tr> 
          <tr> 
           <th class="col-1"> 
            <h3>Invoice Date:</h3> 
           </th> 
           <td class="col-2"> 
            <h3>@Model.Invoice.InvoiceDate.ToShortDateString()</h3> 
           </td> 
          </tr> 
         </table> 
        </div> 
        <div class="order-number-date"> 
         <table> 
          <tr> 
           <th class="col-1"> 
            <h3>Order #:</h3> 
           </th> 
           <td class="col-2"> 
            <h3>@Model.Invoice.OrderNumber</h3> 
           </td> 
          </tr> 
          <tr> 
           <th class="col-1"> 
            <h3>PO #:</h3> 
           </th> 
           <td class="col-2"> 
            <h3>@Model.Invoice.PONumber</h3> 
           </td> 
          </tr> 
          <tr> 
           <th class="col-1"> 
            <h3>Due Date:</h3> 
           </th> 
           <td class="col-2"> 
            <h3>@Model.Invoice.DueDate.ToShortDateString()</h3> 
           </td> 
          </tr> 
         </table> 
        </div> 
       </div> 
      <div class="clr lfl w100"> 
       <div class="bill-ship"> 
        <table> 
         <tr> 
          <th> 
           <h4>Billing Information</h4> 
          </th> 
         </tr> 
         <tr> 
          <td>@Model.Invoice.BTDisplayName 
          </td> 
         </tr> 
         <tr> 
          <td> 
           <@Html.Raw(Model.Invoice.BTAddress1) 
          </td> 
         </tr> 
         @if (!string.IsNullOrEmpty(Model.Invoice.BTAddress2)) 
         { 
          <tr> 
           <td>@Html.Raw(Model.Invoice.BTAddress2) 
           </td> 
          </tr> 
         } 
         <tr> 
          <td>@Html.CityCommaStateZip(Model.Invoice.BTCity, Model.Invoice.BTState, Model.Invoice.BTZip)</td> 
         </tr> 
         <tr> 
          <td>@Model.Invoice.BTCountry 
          </td> 
         </tr> 
         <tr> 
          <td>@Model.Invoice.BTPhone1</td> 
         </tr> 
         <tr> 
          <td>@Model.Invoice.BTEmail 
          </td> 
         </tr> 
        </table> 
       </div> 
      </div> 
      if (Model.Invoice.InvoiceLines.Count > 0) 
      { 
       <div class="clr lfl w100 line-item-detail"> 
        <table class="info-tbl"> 
         <tr> 
          <th class="vid-item">Item #</th> 
          <th class="vid-desc">Description</th> 
          <th class="vid-um"> 
           U/M 
          </th> 
          <th class="vid-qty"> 
           Qty 
          </th> 
          <th class="vid-ship"> 
           Ship Date 
          </th> 
          @if (Model.ShowPackslip) 
          { 
           <th class="vid-pack">Pack Slip</th> 
          } 
          <th class="vid-unit">Unit Price</th> 
          <th class="vid-ext">Ext Price</th> 
         </tr> 
         @foreach (var invoiceLine in Model.Invoice.InvoiceLines) 
         { 
          <tr> 
           <td class="vid-line">@invoiceLine.LineNumber</td> 
           <td class="vid-desc">@invoiceLine.Description</td> 
           <td class="vid-um">@invoiceLine.UnitOfMeasure</td> 
           <td class="vid-qty">@invoiceLine.QtyOrdered</td> 
           <td class="vid-ship"> 
           @if (invoiceLine.ShipDate.ToShortDateString() == "1/1/0001") 
           { 
           } 
           else 
           { 
            @invoiceLine.ShipDate.ToShortDateString() 
           } 
           </td> 
           @if (Model.ShowPackslip) 
           { 
            <td class="vid-pack"> 
            <a href="@Url.RouteUrl(new { controller = "Account", action = "ShipmentDetail", PackSlipNum = invoiceLine.PackSlip })">@invoiceLine.PackSlip</a> 
            </td> 
           } 
           <td class="vid-unit">@invoiceLine.UnitPrice.ToCurrency() 
           </td> 
           <td class="vid-ext">@invoiceLine.ExtendedPrice.ToCurrency() 
           </td> 
          </tr> 
         } 
        </table> 
       </div> 
      } 
      <div class="clr lfl w100"> 
       <table class="tbl-total"> 
        <tr class="subtotal"> 
         <th class="col-1">Subtotal</th> 
         <td class="col-2">@Model.Invoice.OrderSubTotal.ToCurrency() 
         </td> 
        </tr> 
        @if (Model.Invoice.DollarOffOrder > 0) 
        { 
         <tr> 
          <th class="col-1">Order Discount</th> 
          <td class="col-2">@Model.Invoice.DollarOffOrder.ToCurrency()</td> 
         </tr> 
        } 
        @if (Model.Invoice.ShippingAndHandling > 0) 
        { 
         <tr> 
          <th class="col-1">Shipping</th> 
          <td class="col-2">@Model.Invoice.ShippingAndHandling.ToCurrency() 
          </td> 
         </tr> 
        } 
        @if (Model.Invoice.MiscCharges > 0) 
        { 
         <tr> 
          <th class="col-1">Misc. Charges</th> 
          <td class="col-2">@Model.Invoice.MiscCharges.ToCurrency()</td> 
         </tr> 
        } 
        <tr> 
         <th class="col-1">Sales Tax</th> 
         <td class="col-2">@Model.Invoice.TotalTax.ToCurrency()</td> 
        </tr> 
        <tr> 
         <th class="col-1">Invoice Total</th> 
         <td class="col-2">@Model.Invoice.InvoiceTotal.ToCurrency()</td> 
        </tr> 
       </table> 
      </div> 
      <div class="clr lfl w100"> 
     <a class="btn btnStyleB btn-print" href="javascript:window.print();">Print</a> 
     </div> 
    } 
} 
</div> 
</div> 

回答

0

你可以创建一个名为例如“nullcheck.cshtml”之类的模板:

@if (ViewBag.ValueToCheck == null) { 
    <div class="lfl w100 clr messaging"> 
    <p> 
     No information available at the moment for @(ViewBag.Field). 
     Please call our sales department for further assistance. 
    </p> 
    </div> 
} 
else { 
    @Html.Partial(ViewBag.TargetTemplate, Model) 
} 

然后你把它叫做你主视图:

@{ 
    ViewBag.TargetTemplate = "okModel"; 
    ViewBag.Field = "P.O.Number"; 
    ViewBag.ValueToCheck = Model.Invoice.PONumber; 
    Html.RenderPartial("nullCheck", Model, ViewBag); 
} 

okModel.cshtml应该是您的模板的一部分,值不为空...

我没有测试此我自己,但它应该给你一些想法......我联系,如果事情出差错XD

干杯!

0

这似乎是你应该在你的控制器中照顾的东西。

public ActionResult YourControllerAction() 
{ 
    var myViewModel = SomeService.GetMyViewModel(); 
    if (myViewModel.Invoice.PONumber == null) 
    { 
     myViewModel.Invoice.PONumber = "N/A"; 
    } 

    //etc 
} 

这将使您的视图更清晰的(我的个人偏好)

然而,在视图中,您可以简单地使用null coalescing operator像这样:

@Model.Invoice.PONumber ?? "NA"