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

问题描述 投票:1回答:1

我在剃刀视图.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

但不起作用

请告知。谢谢

javascript c# asp.net-mvc razor-pages
1个回答
0
投票

由于无法触发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")
    }
)
© www.soinside.com 2019 - 2024. All rights reserved.