这是MVC中转换为html标记的简单方法。
@Html.HiddenFor(model => model.myName);
这将转换为以下html。
<input type="hidden" name="myName" value="ABC..." />
该表达式如何转换为字符串。假设如果我想编写这种方法,那么如何知道属性名称及其值。假设从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;
}
可以如下使用:
public class Model
{
public int MyProperty { get; set; }
}
static void Main(string[] args)
{
// Prints "MyProperty"
Console.WriteLine(GetPropertyName(model => model.MyProperty));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句