2015-06-22 131 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) 

或者你可以嘗試一些其他的變化,只需要注意在你的標記中呈現你的網址