如果我的模特有
[DisplayName("First Name")]
public string firstName { get; set; }
然后我可以在带有LabelFor的视图中打印它
@Html.LabelFor(model => model.acc_first)
然后呈现为
<label for="firstName">First Name</label>
答案 0 :(得分:44)
@Html.DisplayNameFor(x => x.acc_first)
答案 1 :(得分:13)
要访问属性,您需要自定义Html
帮助程序。由于属性实际上不是属性或模型的一部分,因此您需要进行一轮访问它们。
public static IHtmlString DisplayName<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression) {
var metadata = ModelMetadata.FromLambdaExpression<TModel, TValue>(expression, html.ViewData);
return new HtmlString(metadata.DisplayName);
}
对于不属于DataAnnotations的其他属性,您可以执行以下操作:
创建自定义属性
public class TooltipAttribute : Attribute, IMetadataAware {
public TooltipAttribute(string tooltip) {
this.Tooltip = tooltip;
}
public string Tooltip { get; set; }
public void OnMetadataCreated(ModelMetadata metadata) {
metadata.AdditionalValues["Tooltip"] = this.Tooltip;
}
}
神奇发生在OnMetadataCreated实现中。在这里,我们可以使用我们特定属性所需的任何东西填充AdditionalValues。在这种情况下,我们添加了一个Tooltip键。您的名称应该是唯一的,因为其他属性或提供程序可能会添加具有相同名称的自己的键。请务必记住,属性并不总是以相同的顺序读取。因此,您的工具提示属性可能会在第一个,最后一个或中间的某个地方被调用。这是一个重要的区别,因为它可能会导致不良影响。
然后创建一个自定义属性助手
public static IHtmlString TooltipFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression) {
var metadata = ModelMetadata.FromLambdaExpression<TModel, TValue>(expression, html.ViewData);
if (metadata.AdditionalValues.ContainsKey("Tooltip"))
return new HtmlString((string)metadata.AdditionalValues["Tooltip"]);
return new HtmlString("");
}
答案 2 :(得分:5)
您可以通过4个步骤访问属性Display(Name="...")
的值:
var type = typeof(YourNamespace.Models.YourModelName);
var memInfo = type.GetMember("firstName"); // your member
var attributes = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.DisplayAttribute), false);
var displayname = ((System.ComponentModel.DataAnnotations.DisplayAttribute)attributes[0]).Name;
然后displayname
将在您的上下文中显示值First Name
。
答案 3 :(得分:3)
以Darren Oster的回答为基础:
@Html.DisplayNameFor(x => x.acc_first)
你可以在你的视图代码中使用它:
@{
var foo = Html.DisplayNameFor(x => x.acc_first);
// call function
DoStuff(foo);
}
答案 4 :(得分:0)
你应该只使用
[Display(Name = "First Name")]
public string name{ get; set; }
答案 5 :(得分:0)
File "<ipython-input-129-a0ad4118e99e>", line 1, in <module>
pruned_model.fit(x1,y, epochs=50, verbose=True, batch_size=16,callbacks=callbacks)
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py", line 806, in fit
shuffle=shuffle)
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py", line 2503, in _standardize_user_data
self._set_inputs(cast_inputs)
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow\python\training\tracking\base.py", line 456, in _method_wrapper
result = method(self, *args, **kwargs)
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py", line 2773, in _set_inputs
outputs = self.call(inputs, training=training)
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\sequential.py", line 256, in call
outputs = layer(inputs, **kwargs)
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 594, in __call__
self._maybe_build(inputs)
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 1713, in _maybe_build
self.build(input_shapes)
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow_model_optimization\python\core\sparsity\keras\pruning_wrapper.py", line 175, in build
self.prunable_weights = self.layer.get_prunable_weights()
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow_model_optimization\python\core\sparsity\keras\prune_registry.py", line 169, in get_prunable_weights
return [getattr(layer, weight) for weight in cls._weight_names(layer)]
File "C:\Users\Rubens\Anaconda3\lib\site-packages\tensorflow_model_optimization\python\core\sparsity\keras\prune_registry.py", line 169, in <listcomp>
return [getattr(layer, weight) for weight in cls._weight_names(layer)]
AttributeError: 'Dense' object has no attribute 'kernel'
您必须更改为asp-for
答案 6 :(得分:0)
[Display(Name ="First Name")]
答案 7 :(得分:-2)
@Html.DisplayFor(model => model.acc_first)
应该适合你。如果没有,请尝试
@Model.acc_first
任何一个都应该可以正常工作。
答案 8 :(得分:-3)
@(This.Model.acc_first)
应该工作
所以在javascript中你可以像
一样使用它function callme(val)
{
//some ajax call with
@(This.Model.acc_first)
}