J'essaie de transmettre une variable d'une méthode de mon contrôleur à une méthode dans un modèle. Puisque la méthode dans le Modèle prend un argument (qui a été conçu plus tôt), je ne peux pas passer ma variable comme un argument à la méthode dans le Modèle. Et aussi, la méthode dans ce modèle est appelée par d'autres contrôleurs aussi, donc si je change l'argument, je dois aussi changer tous les contrôleurs, ce qui serait une tâche fastidieuse. Ce que j'ai essayé jusqu'ici est: j'ai créé une classe MyVariableClass et déclaré une propriété. Ensuite, j'ai instancié cette classe et défini la chaîne de propriété à la variable que je voulais transmettre. Maintenant, dans la méthode de mon modèle, j'ai encore instancié la même MyVariableClass, mais quand je l'ai fait, la valeur de la variable a été définie sur null. Le code que j'ai est en ce moment -Passer la propriété du contrôleur au modèle
public ActionResult ItemInformation(string id)
{
//Pass a string to MyVariable
MyVariableVClass params = new MyVariableClass();
params.myVariable = "abc";
//This is what My Model is taking as an argument(id), and I don't want to
//pass mYvariable along with that argument because it will break other controllers
// too which calls this method
var itemInformation = _repository.GetItemInformation(id);
return View(itemInformation);
}
et
MyVariableClasspublic class MyVariableClass
{
public string myVariable { get; set; }
}
et la méthode dans mon modèle
public IList<Items> GetItemInformation(string itemId)
{
MyVariableClass webType = new MyVariableClass();
var _params = webType.myVariable;
//Check this variable and perform database query
if (_params =="this")
{
var query = myFirstQuery;
}
else
{
var query = mySecondQuery;
}
//return ....
}
Tout le monde a une solution à cela? Merci d'avance!
Vous ne semblez pas passer votre instance de 'MyVariableClass' (c'est-à-dire' params') à quelque chose. Au lieu de cela, vous le créez deux fois, une fois dans votre contrôleur et une fois dans votre modèle. Comment cela est-il censé accomplir quoi que ce soit? (De plus, vos modèles ne devraient pas avoir de comportement - méthodes - ils sont destinés à contenir des données, pas à être des dépôts pour des morceaux de code aléatoires.) Mettez ce comportement 'GetItemInformation' ailleurs. –
Ouais! En fait, ma question était de savoir comment passer l'instance de MyVariableClass à getItemInformation sans changer les arguments actuels de GetItemInformation? – ACS