7
votes

Le mot clé contextuel 'var' ne peut apparaître que dans les problèmes de déclaration de variable locale

Je sais ce que cela signifie, et j'ai cherché google, et msdn. Mais, alors que je vais me contenter de cela?

J'ai une fonction dans mon code de rasoir dans le dossier App_code (à l'aide de webmatrix), et je reçois des informations de la base de données, effectuez des calculs, puis mettez à jour la base de données avec le NOUVEAU TOTAL.

Mais, comment puis-je passer des variables à ma méthode dans le dossier App_code si cela ne me laissera pas?

Voici ce que j'ai:

EDITQUANTITY.CSHTML (dossier racine): xxx

et, base.cs (Dossier d'app_code): xxx

J'ai essayé quelques choses à voir si cela fonctionnerait, mais Nope. Je fais évidemment le problème, mais c'est comme ça que je le fais dans des applications de bureau, je ne comprends pas pourquoi ce serait différent ici pour les pages Web et comment shold je vais faire cela?

Merci!


1 commentaires

En tant que note latérale: les déclarations préparées / paramétrées sont votre ami. Ne créez pas de requêtes par des concatuations à la chaîne, sauf si vous avez une raison vraiment bonne raison.


5 Réponses :


1
votes

Il suffit de remplacer les vars dans la liste des paramètres avec des types de béton.

si supposant que ce sont des cordes, vous auriez ceci:

vide public CalculateTotalpriceincart (chaîne Nombre, description de la chaîne, chaîne Orderid, bool isboxed)


2 commentaires

NOOOOPE! Ne fonctionne pas désolé. Déjà essayé et obtenez ceci: ne peut pas convertir implicitement de type 'System.Collections.Generic.Inédiric ' à 'String'


Quelle variable arrive comme une iénumérable? On dirait que vous pouvez également avoir des problèmes dans le code qui remplissent ces variables car cela ressemble à une collection, bien que le code semble s'attendre à des valeurs simples. En tout état de cause, la solution consiste à donner des types réels à vos paramètres qui correspondent à ce qui se passe, mais avant de vous assurer que ces variables tiennent les types que vous pensez qu'ils sont.



2
votes

Vous ne pouvez pas utiliser var comme type de paramètre de méthode. Il doit s'agir d'un vrai type (chaîne, int, objet, etc.). var ne peut être utilisé qu'à l'intérieur d'une méthode (comme dans votre pourbeach)


7 commentaires

J'ai essayé d'utiliser une chaîne, mais alors il jette un ne peut pas convertir implicitement le type 'System.Collections.Generic.Inédiric ' vers 'String' Exception


Ensuite, vous devez utiliser iEnumerable comme type, ou éventuellement juste iénumérable


J'ai essayé d'utiliser dynamique comme type, mais j'ai donné exactement la même erreur dans ma question


Avez-vous eu d'autres fonctions prenant des paramètres var? Dynamique est autorisé comme type de méthode. Aussi, essayez juste iEnumerable


Merci, mais non, je n'avais aucune autre fonction prenant des paramètres var. J'ai essayé avec juste iEnumerable aussi, mais cela affichait à nouveau l'erreur d'origine.


Pouvez-vous modifier votre message pour inclure la tentative avec dynamique et / ou iNeumérable et l'erreur + la pile que vous obtenez lorsque vous l'exécutez


Oui, veuillez essayer de nettoyer votre question avec le problème réel. Le problème ici, maintenant est que les réponses existantes répondent à la question que vous avez posée, mais elles ne répondent pas à la question sur le problème vous avez, ce qui n'est pas le même Suite. Vous devriez envisager d'accepter une réponse ici et de repousser une nouvelle question avec différents détails. Les questions qui migrent latéralement dans le sens sont problématiques comme ça.



7
votes

Vous ne pouvez pas définir les paramètres de la méthode avec le mot-clé Var car le compilateur ne peut pas déterminer la signature de la méthode au moment de la compilation. xxx

dans un autre commentaire que vous avez dit qu'il ne peut pas lancer ienumerable à un chaîne . Alors déclarez le paramètre correctement! Je ne sais pas quoi c'est. xxx


2 commentaires

J'ai déjà essayé cela, mais cela m'a donné cette erreur: ne peut pas convertir implicitement le type 'System.Collections.Generic.ienumereric. Dynamic>' à 'String'


Voir ma mise à jour, Jase. Il n'y a aucun moyen pour moi de savoir quels sont les types de vos arguments. Vous devez regarder ce que vous essayez de passer.



0
votes

Est-ce votre code actuel?

CalculateTotalPriceInCart(Request.QueryString["PartNumber"], Request.QueryString["Description"], ((IEnumerable<string>)Session["OSFOID"]).FirstOrDefault(), true);


0 commentaires

1
votes

Comme d'habitude, c'est bête. Pourquoi ne pas utiliser le déclarer comme type de type de retour du constructeur? Comme une "règle" var ne doit être utilisée que avec des constructeurs. Si vous avez un profond problème avec cela .. Introduisez DIM dans CSHARP;

Changer simplement le jeton pour une référence de classe lors de la compilation.


0 commentaires