我怎样才能有一个ViewData参数?

时间:2015-05-25 07:16:36

标签: c# asp.net-mvc

我有一些重复的ViewData数据,我在几个controllers中需要它们。我想为此创建一个实用功能。我尝试使用out参数并使用控制器ViewData调用该函数。

有人可以指导正确的语法和方法吗?

public static void GetSheetsEssentialViewData(out ViewDataDictionary ViewData)
{
    ViewData["111"] = Utility.111();
    ViewData["22"] = Utility.22();
    ViewData["33"] = Utility.33();
    .....
}

1 个答案:

答案 0 :(得分:2)

您收到错误是因为在使用它之前必须在方法中初始化out参数 - 它最初是未分配的。但是,我认为您根本不希望它成为out参数。

您可以直接从控制器传递现有引用,而不是使用out参数:

// In UtilityClass
public static void GetSheetsEssentialViewData(ViewDataDictionary viewData)

然后在控制器方法中:

UtilityClass.GetSheetsEssentialViewData(ViewData);

或者您可以考虑将其作为扩展方法:

public static void PopulateSheetsData(this ViewDataDictionary viewData)

然后你在你的控制器中你可以用:

来调用它
ViewData.PopulateSheetsData();

非常易读,IMO。

(要详细了解refout参数,您可能需要阅读my article about C# parameter passing。)