2016-04-11 41 views
1

我正在嘗試將級聯下拉列表添加到我的網站上的一個頁面。我遵循http://www.mikesdotnetting.com/article/196/webmatrix-jquery-cascading-dropdown-lists提供的例子,唯一的變化是我已經改變了變量名稱以適應我的應用程序,因爲我只想在某些情況下存在功能(即創建新記錄),所以有一個if有關代碼的聲明。如何從javascript/jquery調用cshtml文件?

雖然我的第二個下拉列表在頁面加載禁用(如預期),它不會成爲當第一個下拉列表中的項目之一被選中啓用。

我懷疑的是,我沒有打電話GetClients.cshtml(我的麥克的GetProducts.cshtml的變化)正確,可能是由於線路:

$.getJSON('/GetClients/' + ActivityID, function (clients) { 

不看在正確的文件夾。

在一個理想的世界,我可以用剃刀符號(〜)來強制將正確對待,無論使用服務器版或本地主機的完整路徑。但是,這似乎並不是JavaScript中的一個選項。

GetClients.cshtml位於同一文件夾中包含的JS代碼,HTML下拉列表等,我試圖控制CSHTML文件。有人能讓我知道上面的代碼是否引用了「隔壁」文件,如果不是,我應該修改上面的代碼行?

回答

0

如果您GetClients.cshtml文件根目錄下的文件夾中,您需要在您傳遞到的getJSON方法的URL該文件夾。例如,假設你的結構是這樣的:

root 
    folder 
     GetClients.cshtml 
     CallingPage.cshtml 
    Default.cshtml 
    etc 

你傳遞給方法的getJSON的網址應該是/folder/getclients加上你要傳遞的任何其他URLData /查詢字符串。

+0

謝謝邁克!我可以禮貌地建議你在你的博客頁面上添加一點評論嗎?我已經看到很多人對你的代碼版本不起作用感到困惑,我懷疑這是因爲他們和我一樣,盲目地關注你寫的東西。 (順便說一句,我選擇了正確的答案,但只有當我獲得一點正面聲譽時纔會顯示。) –

1

你不能直接從Javascript調用視圖,這就是爲什麼在ASP.NET MVC控制器中創建返回該視圖的Action。

public MyController{ 
    public ActionResult GetMyCoolCshtmlFile(){ 
     return View("pathToMyCoolCshtml.cshtml"); 
    } 
} 

,並調用它的JS:

$.get("/my/GetMyCoolCshtmlFile").done(function(yourMarkup){doWhatYouWantWithYourMarkup(yourMarkup);}) 
1

你不會直接訪問Razor視圖,您將通過一個操作方法訪問它。

我認爲問題在於你得到了404,因爲路徑不正確。如果你打開你的瀏覽器控制檯,你應該能夠看到一個404錯誤。

使用Url.Action HTML輔助方法來生成你的操作方法正確的相對路徑。

var url="@Url.Action("GetClients","YourcontrollerName")";  
$.getJSON(url + ActivityID, function (clients) { }); 

當剃刀視圖引擎執行該視圖中,將調用輔助方法和使用該方法調用的輸出(其是對動作方法正確的相對路徑)的JavaScript變量。無論您當前的網頁/網址如何,此解決方案都可以正常工作。

假設你有一個名爲GetClients的操作方法,它接受一個id和JSON格式返回客戶。

public ActionResult Getclients(int id) 
{ 
    // to do : Return a list of Clients as json 
} 

上述代碼將在剃刀視圖內工作。如果您的代碼位於extenal JavaScript文件中,請使用此post中介紹的解決方案。

+0

謝謝你,但你的答案似乎假設我使用Visual Studio和MVC。我不是。我使用WebMatrix,並且根據MVC原則,我不會分割我的頁面。你的第一個建議看起來是可行的,但因爲我不認爲我有一個'控制器',我正在努力解決我應該用作「YourcontrollerName」的問題。你能幫我解決嗎? –

+0

用您擁有Getclients方法的控制器名稱替換yourController名稱。 – Shyju

+0

好的,我很抱歉是啞巴,但是什麼是控制器名稱? –

相關問題