Razor视图模型绑定使用javascript函数

Razor视图模型绑定使用javascript函数,javascript,c#,asp.net-mvc,razor-pages,Javascript,C#,Asp.net Mvc,Razor Pages,我在reazor view.cshtml中有以下模型绑定 @Html.TextBoxFor(m => m.cDate, new{ @id = "textd", @type = "text" } ) 我想在绑定之前调用javascript函数,如下所示 @Html.TextBoxFor(m => updatedateFormat(m.cDate), new{ @id = "textd", @typ

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

@Html.TextBoxFor(m => m.cDate,
    new{
        @id = "textd",
        @type = "text"
    }
)
我想在绑定之前调用javascript函数,如下所示

@Html.TextBoxFor(m => updatedateFormat(m.cDate),
    new{
        @id = "textd",
        @type = "text"
    }
)
@{
  string ccDate= @Convert.ToString("updatedateFormat(@Model.cDate)");
}
@Html.TextBoxFor(m => ccDate,
new
updatedateFormat是一个javascript函数

我确实有很多选项只使用c#,但我很想知道我们是否可以将javascript函数与模型绑定一起使用

我试着像下面一样

@Html.TextBoxFor(m => updatedateFormat(m.cDate),
    new{
        @id = "textd",
        @type = "text"
    }
)
@{
  string ccDate= @Convert.ToString("updatedateFormat(@Model.cDate)");
}
@Html.TextBoxFor(m => ccDate,
new
但不起作用

请告知。
谢谢

因为不可能触发
Javascript
函数,所以当呈现输入元素或任何其他
html
元素时,您可以使用
文档。ready
事件来实现您想要的:

@Html.TextBoxFor(m =>m.cDate,
    new{
        @id = "textd",
        @type = "text",
    }
)
当文件准备就绪时:

$(document).ready(function () {
    var ccDate= document.getElementById('textd');
    updatedateFormat(ccDate);
})
$(document).ready(function () {
    $('[data-onload]').each(function(){
    eval($(this).data('onload'));
  });
})
或者,您可以添加自定义属性,例如
data onload
,以模拟加载事件:

@Html.TextBoxFor(m => m.cDate,
    new{
        @id = "textd",
        @type = "text",
        data_onload="updatedateFormat('@Model.cDate')"
    }
)
当文件准备就绪时:

$(document).ready(function () {
    var ccDate= document.getElementById('textd');
    updatedateFormat(ccDate);
})
$(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
函数,因此在呈现输入元素或任何其他
html
元素时,您可以使用
文档.ready
事件来实现所需:

@Html.TextBoxFor(m =>m.cDate,
    new{
        @id = "textd",
        @type = "text",
    }
)
当文件准备就绪时:

$(document).ready(function () {
    var ccDate= document.getElementById('textd');
    updatedateFormat(ccDate);
})
$(document).ready(function () {
    $('[data-onload]').each(function(){
    eval($(this).data('onload'));
  });
})
或者,您可以添加自定义属性,例如
data onload
,以模拟加载事件:

@Html.TextBoxFor(m => m.cDate,
    new{
        @id = "textd",
        @type = "text",
        data_onload="updatedateFormat('@Model.cDate')"
    }
)
当文件准备就绪时:

$(document).ready(function () {
    var ccDate= document.getElementById('textd');
    updatedateFormat(ccDate);
})
$(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")
    }
)
不,我只在c#控制器中更改它。不,我只在c#控制器中更改它