簡體   English   中英

如何從javascript / jquery調用cshtml文件?

[英]How should I call a cshtml file from javascript/jquery?

我正在嘗試將級聯下拉列表添加到網站上的頁面。 我遵循了http://www.mikesdotnetting.com/article/196/webmatrix-jquery-cascading-dropdown-lists上顯示的示例,唯一的變化是我已更改了變量名以適合我的應用程序,並且我只希望該功能在某些情況下存在(即創建新記錄),相關代碼周圍有一個if語句。

盡管我的第二個下拉列表在頁面加載時被禁用(如預期的那樣),但是當選擇了第一個下拉列表項之一時,它並未啟用。

我懷疑我沒有正確調用GetClients.cshtml(我的Mike的GetProducts.cshtml的變體),可能是由於以下原因:

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

沒有在正確的文件夾中查找。

在理想的情況下,無論使用服務器版本還是本地主機,我都可以使用Razor波浪號(〜)強制顯示正確的完整路徑。 但這似乎不是JavaScript中的選項。

GetClients.cshtml與包含我要控制的JS代碼,HTML下拉列表等的cshtml文件位於同一文件夾中。 有人可以讓我知道上面的代碼是否引用了“隔壁”文件,如果沒有,我應該修改上面的代碼行嗎?

您不能直接從Javascript調用視圖,這就是為什么只在返回該視圖的ASP.NET MVC Controller中創建Action的原因。

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

並在JS中調用它:

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

您將不會直接訪問剃刀視圖,而是將通過操作方法來訪問它。

我認為問題是您得到404,因為路徑不正確。 如果打開瀏覽器控制台,應該會看到404錯誤。

使用Url.Action html幫助器方法可生成操作方法的正確相對路徑。

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

當razor視圖引擎執行該視圖時,它將調用helper方法並將該方法調用的輸出(這是action方法的正確相對路徑)用於javascript變量。 無論您當前的頁面/ URL如何,此解決方案都將起作用。

假設您有一個名為GetClients的操作方法, GetClients方法接受一個id並以JSON格式返回客戶端。

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

如果上面的代碼在剃刀視圖中,它將起作用。 如果你的代碼是一個extenal的JavaScript文件中,使用該解決方案在此解釋

如果您的GetClients.cshtml文件位於根目錄下的文件夾中,則需要將該文件夾包含在傳遞給getJSON方法的URL中。 例如,假設您的結構如下:

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

傳遞給getJSON方法的url應該是/folder/getclients加上要傳遞的所有其他URLData / querystrings。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM