javascript - Razor View 模型绑定(bind)使用javascript函数

标签 javascript c# asp.net-mvc razor-pages

我在 reazor View .cshtml 中有以下模型绑定(bind)

@Html.TextBoxFor(m => m.cDate,
    new{
        @id = "textd",
        @type = "text"
    }
)

我想在绑定(bind)之前调用 JavaScript 函数,如下所示

@Html.TextBoxFor(m => updatedateFormat(m.cDate),
    new{
        @id = "textd",
        @type = "text"
    }
)

updatedateFormat是一个JavaScript函数。

我确实有很多选择只与 C# 相关,但我很好奇我们是否可以将 javascript 函数与模型绑定(bind)一起使用。

我尝试过如下

@{
  string ccDate= @Convert.ToString("updatedateFormat(@Model.cDate)");
}
@Html.TextBoxFor(m => ccDate,
new

但不工作

请指教。 谢谢

最佳答案

由于无法触发 Javascript 函数,因此当呈现 input 元素或任何其他 html 元素时,您可以使用 document.ready 事件来实现你想要的:

@Html.TextBoxFor(m =>m.cDate,
    new{
        @id = "textd",
        @type = "text",
    }
)

当文档准备好时:

$(document).ready(function () {
    var ccDate= document.getElementById('textd');
    updatedateFormat(ccDate);
})

或者您可以添加自定义属性,例如 data-onload 来模拟加载事件:

@Html.TextBoxFor(m => m.cDate,
    new{
        @id = "textd",
        @type = "text",
        data_onload="updatedateFormat('@Model.cDate')"
    }
)

当文档准备好时:

$(document).ready(function () {
    $('[data-onload]').each(function(){
    eval($(this).data('onload'));
  });
})

如果您只想格式化属性的值,可以使用 HTML 帮助程序中的 ToString() 函数来实现:

@Html.TextBoxFor(m =>m.cDate,
    new{
        @id = "textd",
        @type = "text",
        @Value = Model.cDate.ToString("yyyy/MM/dd")
    }
)

关于javascript - Razor View 模型绑定(bind)使用javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60293213/

相关文章:

javascript - 在表单提交之前从 html 表单元素中删除了 "disabled & ready only"属性

javascript - 将链接添加到 DfP HTML5 横幅的正确方法是什么?

javascript - Jquery:将内容从表复制到div

c# - 防止移动到最近的可能位置

带有新创建行的 Javascript tr click 事件(更新 css)

C# 在 PictureBox 中的某个点上绘制位图

c# - 带有自定义JsonConverter的Json.NET异步支持

javascript - 单击链接调用 javascript 函数

jquery - 动态创建时,连接器样式未应用于 jsPlumb 连接器

asp.net - 为什么 User.IsInRole 会返回 true,而 AuthorizeAttribute 不会?