您应该创建一个值对象来保存要返回的数据。我有一个程序员,他说:“参数是针对大学生和大学生的”。没有冒犯大学生和小学生,但我倾向于同意这种观点......我不使用参数EVER。
解决手头的问题,最彻底的方法是这样的:
public class FooData
{
public List<string> Strings { get; set; }
public int MyInt { get; set; }
}
public FooData GetFooData(int id)
{
var fooStrings = _stringRepository.GetFooStrings(id);
//or wherever you're getting your data from
return new FooData
{
Strings = fooStrings,
MyInt = id, //or whatever the int prop is supposed to be
};
}
一个伟大的原则进行的拇指,我从鲍勃·马丁的书,“清洁守则”据悉,是这样的:如果有要返回的数据,将其返回。如果您有多个返回类型的日期,请将它们加载到包装类中。它会让你的生活更轻松,而下一个必须查看你的代码的人将会花更少的时间来挠头。
编辑:
如果你是新来的C#,我想我要补充说明的一个位。您的方法以void
开头。这意味着它不会返回任何东西。是的,有参数,但你可能已经删除了它们。 :)而不是void
,你的方法需要返回一个类型。如果你只有一种类型的数据要返回,比如List<string>
,你可以说List<string> GetFooData(int id)
等。在我上面的例子中,我添加了新的类/ FooData
类型的方法,使它返回FooData
。希望这可以帮助。如果你已经知道这一切,抱歉说明“显而易见”。 (摆脱你的参数!)
ANOTHER编辑:
如果你试图与ASP.NET MVC这项工作,因为其他评论者建议,你应该这样做了“MVC”的方式。如果您有需要数据的视图,给它这样的视图模型:
public ViewResult SomeViewWithFooData(int id)
{
var fooStrings = _stringRepository.GetFooStrings(id);
//or wherever you're getting your data from
var fooData = new FooData
{
Strings = fooStrings,
MyInt = id, //or whatever the int prop is supposed to be
};
return new View(fooData);
}
然后,你可以有一个名为SomeViewWithFooData
认为,从System.Web.Mvc.ViewPage<FooData>
继承。在你看来,只需拨打Model
即可查看你的数据。此时,Model
是FooData类型。
<%=Model.MyInt %>
是你的int从控制器动作传递给视图。
<%=Model.Strings %>
是您的字符串列表。
你的问题意味着你直接从视图调用控制器...? –
是的。但总的来说,只是一种从方法调用中检索多个值的方法。 – Odys
你可能应该多读一些关于MVC是如何工作的。控制器应该返回一个ViewResult和视图的模型数据,然后视图访问模型。视图不应直接访问控制器。 –