为什么在通过模板初始化时,kendo.ui javascript模板中隐藏字段的验证不起作用?

为什么在通过模板初始化时,kendo.ui javascript模板中隐藏字段的验证不起作用?,javascript,jquery,validation,kendo-ui,Javascript,Jquery,Validation,Kendo Ui,在我的页面上,使用以下kendo.ui模板在客户端创建内容: <script type="text/x-kendo-template" id="BerichtElementTemplate-Tabelle"> <div class="bericht-element"> <input type="hidden" name="Elemente[#= Index #].Art" value="@BerichtElementArten.Tabelle

在我的页面上,使用以下kendo.ui模板在客户端创建内容:

<script type="text/x-kendo-template" id="BerichtElementTemplate-Tabelle">
    <div class="bericht-element">
        <input type="hidden" name="Elemente[#= Index #].Art" value="@BerichtElementArten.Tabelle" />
        <label for="Elemente[#= Index #].TabelleCsv">[[[Tabelle:]]]</label>
        <div class="InputWrapper">
            <input type="hidden" name="Elemente[#= Index #].TabelleCsv" value="#= TabelleCsv#" required data-required-msg="[[[Bitte geben Sie einen Wert ein.]]]" />
            <span class="k-invalid-msg" data-for="Elemente[#= Index #].TabelleCsv"></span>
            <input type="file" onchange="csvFileInput_OnChange(this)" />
            <div class="csv-preview">[[[Keine Daten vorhanden. Bitte wählen Sie eine CSV-Datei aus.]]]</div>
            <span>[[[Überschrift:]]]</span>
            <input type="text" name="Elemente[#= Index #].TabelleUeberschrift" maxlength="200" class="k-textbox" value="#= TabelleUeberschrift #" />
            <span>[[[Unterschrift:]]]</span>
            <input type="text" name="Elemente[#= Index #].TabelleUnterschrift" maxlength="200" class="k-textbox" value="#= TabelleUnterschrift #" />
        </div>
        <div class="remove-element">
            <img src="/images/delete2.png" title="[[[Entfernen...]]]" onclick="RemoveBerichtElementImage_OnClick(this)" />
        </div>
    </div>
</script>
到目前为止,这是可行的。不起作用的是验证隐藏的输入字段。验证器表示字段为空,而不是。我和FireBug核对过了

奇怪的是,如果我将代码更改为以下内容:

$("#DynamicContentWrapper").append($berichtElementTemplateTabelle({
        Index: @j,
        TabelleCsv: '',
        TabelleUeberschrift: '@elem.TabelleUeberschrift',
        TabelleUnterschrift: '@elem.TabelleUnterschrift'
    })
);
$("[name$='[@j].TabelleCsv']")[0].value = '@Html.Raw(javaScriptSafeCsv)';
这意味着隐藏字段的值是在添加模板化内容后设置的。验证器不再抱怨


这是kendo.ui中的错误吗?我遗漏了什么?

我发现了问题。这一行:

TabelleCsv: '@Html.Raw(javaScriptSafeCsv)',
需要:

TabelleCsv: '@javaScriptSafeCsv',
因为字符串
JavaScriptSafeCV
可能包含引号或其他影响页面HTML的字符。虽然FireBug没有显示任何错误,但HTML标记被剑道模板破坏,剑道模板将字符串作为原始HTML写入输入字段的value属性

TabelleCsv: '@javaScriptSafeCsv',