Comment passer un paramètre facultatif dans ActionResult
Cela fonctionne:
public ActionResult Edit(int id, CompPhone cmpPhn)
{
var vM = new MyViewModel();
if (cmpPhn != null) { vM.CmpPhnF = cmpPhn; }
...
}
Si je fais cmpPhn facultatif:
public ActionResult Edit(int id, CompPhone? cmpPhn)
J'obtiens "Erreur 1 Le type" MyProject.Modèles.CompPhone "doit être un non nullable type de valeur afin de l'utiliser comme paramètre" T " dans le générique du type ou de la méthode 'Système.Nullable'.
Comment puis-je faire de ce paramètre d'entrée pour la méthode optionnelle?
Voici le modèle de vue
public class MyViewModel : IValidatableObject
{
...
public CompPhone CmpPhnF { get; set; }
...
}
Appelant la méthode
[HttpPost, ValidateAntiForgeryToken]
public ActionResult PhoneTest(MyViewModel vM)
{
if (ModelState.IsValid)
{ var cmpPhn = vM.CmpPhnF;
return RedirectToAction("Edit", new { id = vM.AcntId, cmpPhn });
}
...
}
Vous devez vous connecter pour publier un commentaire.
Vous ne sont pas en option, vous rendant
nullable
. Pour le rendre facultatif, vous devez définir une valeur par défaut pour le paramètre. (Son uniquement disponible pour C# 4.0 ou supérieur):votre code actuel est de spécifier à
Nullable
et il semble queCompPhone
est une classe n'est pas une valeur de type, et ne peut pas êtreNullable
.CompPhone? cmpPhn
est équivalent àNullable<CompPhone>
oùCompPhone
devrait être unstruct
Je suis d'accord avec Habib, vous faites le paramètre
nullable
.Pour rendre le paramètre facultatif définir deux méthodes identiques, l'un avec le paramètre et l'autre sans. L'un sans il devra utiliser une valeur par défaut prédéfinie pour elle.
et