如何将参数传递给jQuery document.ready()函数(ASP.NET MVC,C#)
我想从我的视图中将参数传递给jQuery document.ready()函数 :
$(document).ready(function (parameter){ $('select[name=Product]').val(parameter); });
如何从我的View中触发事件并传递参数? 我使用Razor作为View引擎。
谢谢
你不能。 document.ready函数不接受参数。 例如,您可以将此参数定义为视图中的全局变量:
然后在你单独的javascript文件中使用这个全局变量:
$(function() { $('select[name=Product]').val(model.SomeProperty); });
要避免使用全局变量,可以定义闭包,然后将此函数返回到ready()
:
function start(parameter) { return function() { /*...use parameter */ alert('parameter: ' + parameter); } }
然后调用ready()
:
$(document).ready(start('someValue'));
您还可以在外部.js文件中定义启动函数,并在主html文件中调用ready(例如)。 示例:external script.js:
function start(parameter) { return function() { /*...use parameter */ alert('parameter: ' + parameter); } }
html文件:
在后一个文件中调用ready()
允许您将服务器参数传递给您的函数。 示例(使用PHP。在这种情况下,您必须将扩展名从html更改为php到此文件):
$(document).ready(start(''));
您可以通过闭包有效地完成此操作。 也就是说,如果你调用类似$(document).ready(startup)
那么你可以轻松地重写startup
这样你就可以使用参数调用它,例如$(document).ready(startup(7))
。 巴勃罗给出了一个非常低估的答案,值得给出一个更详细的例子。
例
这是一个显示由$(document).ready()
调用的警报的页面,它计算6*9
:
Hello!
假设您要用可变参数替换“9”。 这样做的四步方法是:
- 参数化该function。
- 将function体包裹在一个封闭物中。 也就是说,
return function() {...}
。 - 参数化身体。
- 使用参数调用该函数。
将此应用于上面的代码:
Hello!
这会显示警告“6 * 7 = 42”。
发生了什么?
$(document).ready()
将一个函数作为参数。 这就是为什么在上面的第一个版本中调用它而只是startup
作为参数。 相反,如果你用startup()
调用它,你将不再传递startup
函数,你将传递startup
的返回值 。
因为$(document).ready()
接受一个函数作为参数,所以我们给它: startup
在上面的第二个版本中转换为一个返回函数的函数,该函数将参数x
设置为我们传递给它的值原来。 也就是说, startup(7)
将函数返回到$(document).ready()
,其值为x
设置为7
。
OP的问题
要将此问题专门应用于OP的问题,请将该调用重写为
$(document).ready((function(x) { return function() { $('select[name=Product]').val(x); }})('name'));
其中'name'
可以是替换x
任何其他值。 不需要全局变量。
更多信息: JavaScript闭包 。
如果您的参数值在视图中内联,则可以简单地将参数值回显到Javascript代码中。
$(document).ready(function (){ $('select[name=Product]').val('@ViewBag.Parameter'); });
- 更新了JQuery – 获取Microsoft JScript运行时错误:’jQuery’未定义
- 无法在jquery ajaxpost上使用mvc 3进行不显眼的validation
- validation至少一个复选框
- ASP.NET MVC可以使用带有动态类型参数的参数将JSON对象传递给控制器吗?
- JQuery Datepicker不会发布英国日期字符串
- 在jQuery UI对话框中,observableArray绑定表不会更新
- MVC3 jQuery getJSON不会发出调用
- 处理(jQuery)Ajax调用中返回的ASP.NET MVC FileResult
- 如何在MVC3中的JQuery ajax调用上重定向到新页面(以及模型)