0

razorビューエンジンを備えたasp.net Webアプリケーションがあります。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>

nullただし、この行には Modelの例外が表示され@if(Model[0].Count == 0 || Model[0] == null) {ます。

では、どうすればこの問題を解決できますか? 助言がありますか?

4

2 に答える 2

5

null最初にチェックするオペランドを逆にします。

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

そのような式の条件はその後チェックされるため、最初の式がtrue(またはfalseの場合&&) を与える場合、それ以上の計算は実行されません。したがってnull、最初に for をチェックしてから、さらにチェックするために object を使用することをお勧めします。

于 2013-07-22T08:34:12.693 に答える
0

ビューに NULL モデルを渡さないことを強くお勧めします。ビューで使用する予定のプロパティを持つビューモデル クラスを渡します。

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モデルをビューに渡したことがありません. ビューのロジックをレイアウトするよりわかりやすい方法を使用する方がはるかにクリーンだと思いますが、適切な名前のプロパティを持つビューモデルを使用します。

于 2013-07-22T09:02:19.847 に答える