这是MVC中一个转换为html标签的简单方法.
@Html.HiddenFor(model => model.myName);
Run Code Online (Sandbox Code Playgroud)
这被转换成下面的html.
<input type="hidden" name="myName" value="ABC..." />
Run Code Online (Sandbox Code Playgroud)
如何将此表达式转换为字符串.让我们假设如果我想编写这种方法,我怎么知道属性名称及其值.假设来自HiddenFor参数,将如何提取myName和myName值.这不是MVC特有的,但与LINQ表达式有关.
非常感谢提前.
这与LINQ无关(除了LINQ大量使用那些"表达式树").
model => model.MyProperty是一个lambda表达式,当被视为一个而不仅仅是一个时,可以解析Expression<Func<Model, T>>它Func<Model, T>.
让我用(主要是不言自明的)例子回答你的问题:
public static string GetPropertyName<T>(Expression<Func<Model, T>> expr)
{
var member = (MemberExpression)expr.Body;
var property = (PropertyInfo)member.Member;
return property.Name;
}
Run Code Online (Sandbox Code Playgroud)
可以使用如下:
public class Model
{
public int MyProperty { get; set; }
}
static void Main(string[] args)
{
// Prints "MyProperty"
Console.WriteLine(GetPropertyName(model => model.MyProperty));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2011 次 |
| 最近记录: |