Dans cette ligne:
@Html.ActionLink("Reply", "BlogReplyCommentAdd", "Blog",
new { blogPostId = blogPostId, replyblogPostmodel = Model,
captchaValid = Model.AddNewComment.DisplayCaptcha })
J'obtiens l'erreur d'exécution suivante sur blogPostId:
Le dictionnaire de paramètres contient une entrée nulle pour le paramètre 'blogPostId' de type non nullable 'System.Int32' pour la méthode 'System.Web.Mvc.ActionResult BlogReplyCommentAdd (Int32, Nop.Web.Models.Blogs.BlogPostModel, Boolean)' dans «Nop.Web.Controllers.BlogController». Un paramètre facultatif doit être un type référence, un type Nullable ou être déclaré en tant que paramètre facultatif. Nom du paramètre: paramètres
J'ai déjà attribué une valeur pour cela en plus, telle que
@{
var blogPostId = Model.Id;
}
Mon contrôleur:
public ActionResult BlogReplyCommentAdd(int blogPostId, BlogPostModel model, bool captchaValid)
{}
Est-ce que je fais quelque chose de mal? Veuillez me donner un exemple.
la source
controllerName
etactionName
[HttpPost]
dans l'action car le lien envoie une requête GET.[HttpPost]
signifie que l'action de votre contrôleur n'est accessible qu'avec une requête POST.Je dois passer deux paramètres comme:
Par ici:
va générer cette URL
J'ai utilisé une méthode de contournement en fusionnant le paramètre deux dans le paramètre un et j'obtiens ce que je voulais:
Et j'obtiens:
la source
Vous pouvez transmettre des valeurs en utilisant ce qui suit.
Manette:
Et l'URL ressemble à
la source
Le problème doit être lié à la valeur Model.Id qui est nulle. Vous pouvez confirmer en attribuant une valeur, par ex.
Si l'erreur disparaît, vous devez vous assurer que votre identifiant de modèle a une valeur avant de le transmettre à la vue
la source