在mvc我可以使用这样的结构
@Html.TextAreaFor(model => model.iEventSummary, new { @class = "test" })
我正在尝试将此new { @class = "test" }
重现为参数但未成功
testFunction( new {key1="value1", key2="value2", key3="" })
public static string testFunction(dynamic dict)
{
string ret = string.Empty;
IDictionary<string, string> dictionary = dict;
foreach (var item in dictionary)
{
ret += item.Key + item.Value;
}
return ret;
}
如何声明方法变量?
如果我想传递new {key1="value1", key2="value2", key3="" }
作为参数。
答案 0 :(得分:5)
您可以使用RouteValueDictionary将匿名对象转换为IDictionary。将您的功能更改为:
public static string TestFunction(object obj)
{
var dict = new RouteValueDictionary(obj);
var ret = "";
foreach (var item in dict)
{
ret += item.Key + item.Value.ToString();
}
return ret;
}
你可以使用它:
TestFunction(new { key1="value1", key2="value2", key3="" });
答案 1 :(得分:3)
public static string TestFunction(object obj)
{
//To dictionary
//var dict = obj.GetType().GetProperties()
// .ToDictionary(p=>p.Name,p=>p.GetValue(obj,null));
//Directly ToString
string result = String.Join(",", obj.GetType().GetProperties()
.Select(p=>p.Name + ":" + p.GetValue(obj,null)));
return result;
}