我想将我的控制器中的方法的变量传递给模型中的方法。由于模型中的方法需要一个参数(之前已经设计过),所以我无法将我的变量作为参数传递给模型中的方法。而且,这个模型中的方法也被其他控制器调用,所以如果我改变参数,我也必须改变所有的控制器,这将是一个乏味的任务。 我一直在尝试的是 - 我创建了一个MyVariableClass并声明了一个属性。然后我实例化该类并将属性字符串设置为我想要传递的变量。现在,在我的Model的方法中,我再次实例化了相同的MyVariableClass,但是当我这样做时,变量的值被设置为null。我现在所拥有的代码是 -将属性从控制器传递到模型
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 ....
}
任何人有解决这个?提前致谢!
您似乎没有将'MyVariableClass'实例(即'params')传递给任何东西。相反,你创建两次,一次在你的控制器中,一次在你的模型中。那该如何完成任何事情? (另外,你的模型实际上不应该有行为 - 方法 - 它们是为了保存数据,而不是用于随机位代码的存储库,把GetItemInformation行为放在其他地方,它没有业务存在于模型中。 ) – 2011-06-06 19:41:45
是啊!其实我的问题是我如何将MyVariableClass的实例传递给getItemInformation而不更改GetItemInformation的当前结果? – ACS 2011-06-06 20:26:17