【问题标题】:Razor view model binding use javascript functionRazor 视图模型绑定使用 javascript 函数
【发布时间】:2020-06-03 04:49:54
【问题描述】:

我在 reazor 视图 .cshtml 中有以下模型绑定

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

我想在绑定之前调用一个javascript函数,如下所示

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

updatedateFormat 是一个 javascript 函数。

我确实有很多仅与 c# 相关的选项,但我很想知道我们能否将 javascript 函数与模型绑定一起使用。

我尝试如下

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

但不工作

请指教。 谢谢

【问题讨论】:

  • 不,我只在 c# 控制器中更改它

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


【解决方案1】:

由于无法触发Javascript 函数,因此当呈现输入元素或任何其他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")
    }
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多