2015-06-22 126 views
1

我在我的页面上有部分视图,我想重新加载。它位于“附件”分区。如何使用Jquery .load()重新加载部分视图?

我在这工作不正在做什么是使用下面的命令:

$('#attachments').load('@Url.Action("Attachments" "Transactions",new {id=1297})') 

上面会给我一个错误的控制台:

GET http://localhost:49793/Transactions/@Url.Action(%22Attachments%22 404 (Not Found) 

什么我错过了吗?为什么URL.Action()没有正确渲染?

事务控制器中的动作附件是[ChildActionOnly]。

+3

因为您将脚本放在单独的文件中(剃须刀代码未在外部js文件中分析。放入视图中,或者在视图中为url声明一个变量,并将其传递给该函数。 –

+0

你了解@StephenMuecke建议的内容吗?这是做到这一点的正确方法。 –

回答

0

您的操作URL来自您的后端。在你这样做的过程中,你只是发送一个带有后端操作的字符串,而不是url。

一种可能的方式是在HTML一样使用数据属性:

<div id="attachments" data-url="@Url.Action("Attachments" "Transactions",new {id=1297})"></div> 

,并在你的JavaScript:

var $attachments = $('#attachments'), 
    url = $attachments.data('url'); 

$attachments.load(url) 

甚至隐藏输入:

<input type="hidden" id="attachmentsUrl" value="@Url.Action("Attachments" "Transactions",new {id=1297})" /> 

var url = $('#attachmentsUrl').val(); 

$('#attachments').load(url) 

或者你可以尝试一些其他的变化,只需要注意在你的标记中呈现你的网址