簡體   English   中英

在razor應用程序中測試空模型

[英]Testing a null model in razor application

我有一個帶有razor視圖引擎的asp.net Web應用程序。 我想測試Model是否為null

<center><h2 style="color:red">Les actualites des taches</h2></center>
<br />
<br />
@if(Model[0].Count == 0 || Model[0] == null) {
    <label>Pas de nouvelle information</label>
                         }
else{

foreach( var v in Model[0]){
    <div><label>@v</label></div>
   <br />
}

}
<br />
<br />
<br />
<br />
<center><h2 style="color:red">Demande de reservation de véhicules</h2></center>
<br />
<br />
@if (Model[1].Count == 0 || Model[1] == null)
{
    <label>Pas de demande</label>
                         }
else{
    <form action="\Travail\Validation_Reservation" method="post">
@foreach( var v in Model[1]){
    <div><label>@v</label>
    <input type="submit" name="ok" value="valider" />
   <input type="submit" name="No" value="refuser" /></div>
    <br />
}
        </form>
}
<br />
<br />

<center><h2 style="color:red">Demande de validation de tache</h2></center>
<br />
<br />
@if (Model[2].Count == 0 || Model[2] == null)
{
    <label>Pas de demande</label>
                         }
else{
    <form action="\Travail\Validation_Demande" method="post">
@foreach( var v in Model[2]){
    <div><label>@v</label>
    <input type="submit" name="ok" value="valider" />
   <input type="submit" name="No" value="refuser" /></div>
    <br />
}
        </form>
}
<br />
<br />
<center><h2 style="color:red">Déclarer l'absence ou la présence</h2></center>
<br />
<br />
<form action="\Travail\Validation_Absence" method="post">
<input type="submit" name="ok" value="je vais etre indisponible" />
<input type="submit" name="No" value="je suis de retour" /></div>
    <br />

        </form>

但是在此行@if(Model[0].Count == 0 || Model[0] == null) {出現了null模型的異常。

那么我該如何解決這個問題呢? 有什么建議么?

反轉操作數以首先檢查是否為null

@if (Model == null || Model[0] == null || Model[0].Count == 0) {

隨后檢查此類表達式中的條件,以便如果第一個表達式給出true (或在&&情況下為false ),則不執行進一步的計算。 因此,始終最好首先檢查null ,然后再使用object進行進一步檢查。

我強烈建議您不要將NULL模型傳遞給視圖。 傳遞一個viewmodel類,該類具有您打算在視圖中使用的屬性,例如

public class MyViewModel
{
    IList<Reservation> Reservations { get; set; }

    public MyViewModel() {
        this.Reservations = new List<Reservation>();
    }
}

然后您認為您可以執行此操作

@model MyViewModel

if (!Model.Reservations.Any()) {
     <label>No reservations</label>
}

我很欣賞我的代碼可能與您的代碼不完全匹配,但是我希望核心思想能夠通過。 我總是使用視圖來執行此操作,但從未將NULL模型傳遞給視圖。 我認為使用更具描述性的方法來布局視圖的邏輯要干凈得多,但要使用具有良好命名屬性的視圖模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM