$(document).ready时不呈现MVC Razor HTML帮助器

时间:2012-10-17 08:29:42

标签: javascript asp.net-mvc razor document-ready

我刚注意到当我的javascript调用$(document).ready(函数....)时,我的MVC Razor HTML帮助器没有呈现(在DOM中)。 因此,当我在文档中放置依赖于DOM对象的代码时,它就找不到DOM对象。

的Javascript

$(document).ready(function () {
    $('input:radio,select').change(function () {
        DO STUFF...

HTML帮助

@Html.RadioButtonList(m => m.ItemType, new SelectList(Model.ItemTypes, "Name", "Name")

另一个

@Html.DropDownListFor(n => n.ApartmentFloor, new SelectList(Model.ApartmentFloors, "Id", "Floor"), new { @id = "floorsSelect", @class = "exists" })

通常情况下,radiobuttons和下拉列表应该有一个.change函数,但是因为在添加.change时它们还没有渲染,所以它们不会得到那个函数。

有没有办法让“准备好html助手”而不是“准备好文件”?

修改

人们已经指出,在客户端开始渲染之前,HTML帮助程序在服务器上运行,因此也应该在之前完成。这似乎不是这种情况,因为当我调试JS“on document ready”时,HTML助手对象还没有呈现,但页面的其余部分是。

所以问题仍然存在,是否有办法在HTML辅助对象中添加“on load”函数,或者使用razor语法直接从cshtml文件中添加“change”函数?

2 个答案:

答案 0 :(得分:0)

尝试注册这样的事件,

      $('input:radio,select').on("change" ,function () { }) ;

希望这会有所帮助。

答案 1 :(得分:0)

我意识到我从未向我的问题发布解决方案。 尽管人们指出HTML助手应该在文档准备好之前呈现,但对我来说似乎并非如此。 所以我所做的是直接在HTML帮助器上添加事件处理程序:

@Html.RadioButtonList(m => m.MyObject, new SelectList(Model.MyObjects, "Name", "Name"), "inputChangeHandler($(this));")

效果很好=)