Передать свойство из контроллера в модель - PullRequest
0 голосов
/ 06 июня 2011

Я пытаюсь передать переменную из метода в моем контроллере в метод в модели. Поскольку метод в модели принимает один аргумент (который был разработан ранее), я не могу передать свою переменную в качестве аргумента методу в модели. Кроме того, метод в этой модели также вызывается другими контроллерами, поэтому, если я изменю аргумент, мне придется также изменить все контроллеры, что было бы утомительным занятием. До сих пор я пытался: я создал один MyVariableClass и объявил свойство. Затем я создал этот класс и установил в строке свойства переменную, которую хотел передать. Теперь, в методе моей Модели, я снова создал тот же MyVariableClass, но когда я это сделал, значение переменной было установлено на ноль. Код, который у меня сейчас есть, -

 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);
    }

и MyVariableClass

  public  class MyVariableClass
  {
     public string myVariable { get; set; }
  }

и метод в моей модели

  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 ....
   }

У кого-нибудь есть решение этой проблемы? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Любая причина, почему подклассы вашей модели и переопределение метода GetItemInformation не будут работать?Или, что еще проще, почему бы просто не перегрузить метод GetItemInformation тем, который принимает две строки?Другие ваши контроллеры все еще могут использовать тот, который принимает только одну строку.

  public IList<Items> GetItemInformation(string itemId, MyVariableClass webType)
    {

      var _params = webType.myVariable;
       //Check this variable and perform database query 
      if (_params == "this") 
       {
        var query = myFirstQuery;
       }
      else
       {
       var query = mySecondQuery;
       }
     //return ....
   }

  public IList<Items> GetItemInformation(string itemId)
  {
     MyVariableClass fauxType = new MyVariableClass();
     fauxType.myVariable = "not this";

     return GetItemInformation(itemId, fauxType);
  }
0 голосов
/ 06 июня 2011

Попробуйте использовать переменную сеанса .

...