2014-02-19 30 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"); 
} 
相关问题