如果POnumber为null,我有以下视图返回一些文本。 我认为我需要而不是if(Model.Invoice.PONumber == null)是一个检查机制(可能是多个if语句),它将检查字段LineNumber,Description,UnitOfMeasure,QtyOrdered以及它们是否为null它将用N / A或空格替换它,但它仍然允许用户查看剩余的可用信息。 你有任何吸烟吗?我是MVC的新手,任何帮助都会被贬低。
提前感谢您的时间和帮助,Bobby
<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 :(得分: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
干杯!
答案 1 :(得分: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"