在使用MVC/Razor发布期间,删除字符,例如%,$



我有一个c#剃须刀页面,其中包含发布回到服务器的文本框。

在c#中,字段的类型是int,但我希望用户能够在字段中键入"%",但请在页面上添加页面。这可能吗?

当前,我正在使用JavaScript在提交操作中使用JavaScript过滤"%",但是问题是用户能够看到"%"在提交前消失了半秒,这是难看的。我可以在其他时刻剥离"%"吗?

Razor

<td>@Html.TextAreaFor(m => m.percentComplete, new { @class = "interactive_editor percent_editor", rows = 1 })</td>

c#

public int percentComplete { get; set; }

javascript

$('#submit_page').click(function () {
    percentsToNumbers();
});
function percentsToNumbers() {
    $(".percent_editor").each(function () {
        var originalText = $(this).val();
        var number = originalText.replace('%', '');
        $(this).val(number);
    });
}

注意过去,我为显示目的创建了一个单独的字段,例如 percentstring ,该字段被转换为后背面后转换为单独的百分比字段。但是,如果我可以在页面回发过程中转换它,以免在模型中使用两个字段。

考虑一个隐藏的字段来保留并张贴格式的内容?而不是将替换值分配给文本框分配给隐藏字段:

function percentsToNumbers() {
    $(".percent_editor").each(function () {
        var originalText = $(this).val();
        var number = originalText.replace('%', '');
        //$(this).val(number);
        $('.percent_editor_hidden').val(number); //Hidden field
    });
}

和页面上的负载将相同的变量绑定到文本框和隐藏字段。请注意,如果您使用的是非AJAX帖子,则必须设置隐藏字段的name属性以匹配控制器中的参数名称。即percentComplete。并为文本框有不同的名称。

fyi-如果您要输入一个数字,那么您不应有文本区域,而应该有一个具有百分比(%(符号的文本框,以便用户可以理解输入应该是数字。由于您将其绑定到控制器中的int类型。

最新更新