2014-02-19 79 views
0

快速概述:如何在Razor/CSHTML項目中正確使用jQuery.get()?

我試圖加載使用jQuery.get()函數的XML文件 「Barcode.label」。但是,jQuery.get()找不到該文件。我相信這個問題可能是由於在MVC5中工作,並嘗試使用錯誤的路徑約定來查找文件。如何在MVC5 Razor/CSHTML Web項目中獲取正確的文件路徑?

如果需要關於此特定問題的更多信息,我將它公佈在下面。這是我第一次在這裏問一個問題,所以我提前對任何含糊之處表示歉意。


前言:

我工作的剃刀/ CSHTML Web項目的MVC5框架,我必須與DYMO LabelWriter 450雙渦輪增壓打印機接口下。我的最終目標是將通過打印機在網頁上找到的數據打印到標籤單上。

我通過以下提供的位於這裏DYMO的SDK頁面上的樣品開始了我的工作:http://developers.dymo.com/tag/javascript/

大家普遍認爲是在樣品演示中使用的JavaScript代碼的樣本,該位置爲:http://labelwriter.com/software/dls/sdk/samples/js/QRCode/QRCode.js


問題:

在試圖遵循SDK頁面發現樣品中,我遇到了一個障礙在我的程序不親perly分配barcodeLabel。看起來好像jQuery.get()方法沒有定位文件。我確定這是基於來自螢火蟲測試反饋的問題,和如下所示的錯誤:

GET http://localhost:29138/device/Barcode.label 404 Not Found 2ms 

此外,特定的碼塊的後評價讀取barcodeLabel和barcodeAsImageLabel是不確定的。有關躍躍欲試barcodeLabel和barcodeAsImageLabel,和我的問題的源代碼,如下所示:

function loadLabelFromWeb() 
{      
    // use jQuery API to load labels 
    $.get("Barcode.label", function(labelXml) 
    { 
     barcodeLabel = dymo.label.framework.openLabelXml(labelXml); 
     alert("Load was performed for barcodeLabel."); 
    }); 

    $.get("Barcode.label", function(labelXml) 
    { 
     barcodeAsImageLabel = dymo.label.framework.openLabelXml(labelXml); 
     alert("Load was performed for barcodeAsImageLabel."); 
    }); 
} 

試圖解決:

作爲一個理智的測試,我保證loadLabelFromWeb( )在加載頁面時被調用,並且已被證實可以正常工作。但是,我沒有收到以上代碼中顯示的負載警報。 Print.cshtml文件和Barcode.label文件都存儲在同一個目錄中。我的解決方案目錄的快照如下圖所示,以紀念該文件的位置:

> Views 
    > Device 
     > Barcode.label 
     > Print.cshtml 

我的測試,以修復此錯誤包括搬遷Barcode.label文件到許多不同的地點的解決方案中,以及改變filepath使用window.location.pathname獲取當前URL,使用波浪號'〜'的相對路徑,以及硬編碼到文件的路徑。這些方法似乎都不起作用,這使我相信MVC5有不同於我習慣的處理路徑的方式。

我的具體目標是找出如何正確定位Barcode.label文件,以便我可以使用jQuery從文件加載信息。得到()。

回答

0

您的問題最可能的原因是MVC路由引擎。

基於URL http://localhost:29138/device/Barcode.label,MVC路由引擎正在尋找DeviceController上的動作方法Barcode.label()

就可以解決這個使用以下兩種方法之一:

  1. 配置路由引擎忽略路由請求靜態的XML文件。 See this question.
  2. 創建加載XML文件並輸出XML作爲響應的操作方法。

這裏是你將如何實現方法2:

public ActionResult LoadBarcodeXml() 
{ 
    string filePath = "\The\Path\To\The\XML\File.xml"; 
    XmlDocument doc = new XmlDocument(); 
    doc.Load(filePath); 
    return Content(doc.InnerXml, "text/xml"); 
} 
相關問題