快速概述:
我正在尝试使用jQuery.get()函数加载XML文件“Barcode.label”。但是,jQuery.get()无法找到该文件。我认为这个问题可能是由于在MVC5中工作并尝试使用错误的路径约定来查找文件。如何在MVC5 Razor / CSHTML Web项目中获取文件的正确路径?
如果需要有关此特定问题的更多信息,请在下面发布。这是我第一次在这里提问,所以我提前为任何歧义道歉。
前言
我正在使用MVC5框架下的Razor / CSHTML Web项目,我必须与DYMO LabelWriter 450双涡轮增压打印机连接。我的最终目标是通过打印机将网页上的数据打印到标签纸上。
我按照DYMO SDK页面上提供的示例开始了我的工作:http://developers.dymo.com/tag/javascript/
示例演示中使用了一个javascript代码示例,该示例位于:http://labelwriter.com/software/dls/sdk/samples/js/QRCode/QRCode.js
问题:
在尝试按照SDK页面中找到的示例时,我遇到了一个路障,我的程序没有正确分配barcodeLabel。似乎jQuery.get()方法没有找到该文件。我根据Firebug测试的反馈确定了这个问题,错误如下所示:
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文件重定位到解决方案中的许多不同位置,以及使用window.location.pathname更改文件路径以获取当前URL,使用波形符'〜'的相对路径,并硬编码文件的路径。这些方法似乎都不起作用,这使我相信MVC5处理路径的方式与我习惯的不同。
我的具体目标是找出如何正确定位Barcode.label文件,以便我可以使用jQuery.get()从文件中加载信息。
答案 0 :(得分:0)
问题的最可能原因是MVC路由引擎。
基于URL http://localhost:29138/device/Barcode.label
,MVC路由引擎正在Barcode.label()
上寻找一种操作方法DeviceController
。
您可以使用以下两种方法之一解决此问题:
以下是如何实施方法#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");
}