您應該創建一個值對象來保存要返回的數據。我有一個程序員,他說:「參數是針對大學生和大學生的」。沒有冒犯大學生和小學生,但我傾向於同意這種觀點......我不使用參數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和視圖的模型數據,然後視圖訪問模型。視圖不應直接訪問控制器。 –