考虑这个编辑器模板(即使它没有意义 - 为了清晰起见,我已将其简化):
@Html.TextBox("", null)
此编辑器模板应检索调用它的元素的名称和值。名称确实设置正确。但是,价值却没有。
数据类型不同 - 有时它是双精度数,有时它是一个字符串。所以我不能将特定的数据类型声明为模型。
我能使其正常运行的唯一方法是将类型指定为动态:
@model dynamic
@Html.TextBox("", (string)Convert.ToString(Model))
这似乎是一种非常笨拙的语法,虽然它有效。我做对了吗?
修改:
我的editortemplate的完整代码是一个文本字段,可以通过js ajax调用动态计算。它完美地运行,并且可以作为可以根据其他字段的值计算的任何值的通用模板。 不一定是字符串类型。但是,我需要为Html.TextBox值的参数提供一个对象。
@model dynamic
@{
var CalcClasses = (@ViewData.ModelMetadata.AdditionalValues.ContainsKey("CalcClasses")) ? " " + @ViewData.ModelMetadata.AdditionalValues["CalcClasses"] : "";
var CalcUrl = (@ViewData.ModelMetadata.AdditionalValues.ContainsKey("CalcUrl")) ? @ViewData.ModelMetadata.AdditionalValues["CalcUrl"] : "";
var CalcDependsOn = (@ViewData.ModelMetadata.AdditionalValues.ContainsKey("CalcDependsOn")) ? @ViewData.ModelMetadata.AdditionalValues["CalcDependsOn"] : "";
var CalcTooltip = (@ViewData.ModelMetadata.AdditionalValues.ContainsKey("CalcTooltip")) ? @ViewData.ModelMetadata.AdditionalValues["CalcTooltip"] : "";
}
<div class="calculated-field-container input-append">
@Html.TextBox("", (string)Convert.ToString(Model), new
{ @class="calculated-field" + CalcClasses,
data_calc_url = CalcUrl,
data_calc_dependencies = CalcDependsOn
})
<button class="btn button-calculate" data-toggle="tooltip" title="@CalcTooltip">=</button>
</div>
编辑2 :
似乎这也有效:
@{
var CalcClasses = (@ViewData.ModelMetadata.AdditionalValues.ContainsKey("CalcClasses")) ? " " + @ViewData.ModelMetadata.AdditionalValues["CalcClasses"] : "";
var CalcUrl = (@ViewData.ModelMetadata.AdditionalValues.ContainsKey("CalcUrl")) ? @ViewData.ModelMetadata.AdditionalValues["CalcUrl"] : "";
var CalcDependsOn = (@ViewData.ModelMetadata.AdditionalValues.ContainsKey("CalcDependsOn")) ? @ViewData.ModelMetadata.AdditionalValues["CalcDependsOn"] : "";
var CalcTooltip = (@ViewData.ModelMetadata.AdditionalValues.ContainsKey("CalcTooltip")) ? @ViewData.ModelMetadata.AdditionalValues["CalcTooltip"] : "";
}
<div class="calculated-field-container input-append">
@Html.TextBox("", Model, new
{ @class="calculated-field" + CalcClasses,
data_calc_url = CalcUrl,
data_calc_dependencies = CalcDependsOn
})
<button class="btn button-calculate" data-toggle="tooltip" title="@CalcTooltip">=</button>
</div>