NumericTextBox 使用 Html.TextBoxFor 而不是 HTML 丢失值

NumericTextBox Loses Value using Html.TextBoxFor, not HTML

当我将 Kendo UI 核心小部件与 Html.TextBoxFor 一起使用时(用于数字文本框编辑,特别是输入美元金额),如下所示:

@Html.TextBoxFor(i => i.TotalAmount, new { @class = "currency-editor", min = "0", })

在回发和处理数据时,值回发为 null,因此在控制器中完成的服务器端代码检查失败,因为没有任何回发。

当我使用 Raw HTML 时,例如:

<input type="text" id="@Html.IdFor(i => i.TotalAmount)" name="@Html.IdFor(i => i.TotalAmount)" value="@Model.TotalAmount"
       class="currency-editor" min="0" />

它工作得很好。不知道有什么区别?初始化插件(初始化没有问题)是:

$(".currency-editor").kendoNumericTextBox({
            format: "c2",
            decimals: 2,
            spinners: false
         });

显然它在 TextBoxFor 插件内部出现了一些东西,也许是特定于验证的? MVC 5, 2015 Q3 Kendo UI 核心(免费版)。

这个问题与输入验证错误和隐藏的小部件有关 - 我没有放在一起的一个步骤是正在验证此字段并将其添加到标签输出中。诀窍是(如 Telerik 的文档中所述):

@using (Html.BeginForm()) {
    //omitted for brevity
}

<script type="text/javascript">
    $(function () {
        $(".k-widget").removeClass("input-validation-error");
    });
</script>

此处引用: http://docs.telerik.com/kendo-ui/aspnet-mvc/validation#the-widgets-are-hidden-after-a-postback-when-using-the-jquery-validation

你能试试这样吗

<script>
    $(".currency-editor").kendoNumericTextBox({
        format: "c2",
        decimals: 2,
        spinners: false,
        value : @Model.TotalAmount
     });