在剃须刀应用程序中测试零模型
本文关键字:模型 测试 剃须刀 应用程序 | 更新日期: 2023-09-27 18:24:25
我有一个带有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>
但CCD_ 3模型的例外出现在CCD_。
那么我该如何解决这个问题呢?有什么建议吗?
首先反转操作数以检查null
:
@if (Model == null || Model[0] == null || Model[0].Count == 0) {
随后检查这些表达式中的条件,以便如果第一个表达式给出true
(或者在&&
的情况下给出false
),则不执行进一步的计算。因此,最好先检查null
,然后再使用对象进行进一步检查。
我强烈建议您永远不要向视图传递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模型传递给视图。我认为使用一种更具描述性的方式来布置视图的逻辑要干净得多,但要使用一个具有良好命名属性的视图模型。