jquery加载对控制器的调用并填充div元素

我的index.cshtml中有一个div元素,id为#myresults,我试图通过调用mvc控制器方法通过jquery.load方法加载数据。 但我无法获得正确的语法。

我也将自定义对象作为参数传递。

var mycustomObject = { obj1:value1, obj2:value2, .. } 

以下不起作用…(我已尝试过其他组合……我找不到服务器错误)

 $("#myresults").load ('@Url.Action("MyActionMethod","Home")',mycustomObject); 

而以下工作

 $("#myresults").load('/Home/MyActionMethod', mycustomObject); 

虽然最后一个语句有效,但它只适用于localhost。

什么是使用Url.Action进行jquery加载的正确语法?

@Url.Action()将始终生成正确的url,因此如果获得404,则表示此代码位于外部脚本文件中。 剃刀代码不会在外部脚本中执行,因此您的url将成为文本“@ Url.Action(”MyActionMethod“,”Home“)”。

解决这个问题的选择包括

  1. 将代码移动到视图或其布局中
  2. 在视图中声明一个全局变量 – var url = '@Url.Action("MyActionMethod","Home")'; 在外部文件中使用$("#myresults").load(url, mycustomObject);
  3. 将url分配给元素作为data-*属性,例如 ,并在外部文件中

     $('#loadSomething').click(function() { var url = $(this).data('url'); $("#myresults").load(url, mycustomObject); }); 

将div元素定义为:

 

并在您的方法中进行ajax调用: