1

我正在创建一个 asp.net MVC 应用程序,这是我第一次这样做。我有一个需要在视图中使用的 Flash 组件。我已将 SWF 文件等包含在 Contents 文件夹中,并从我的视图中引用它,当您到达视图时会加载 Flash 文件,非常棒。

出现问题是因为闪存文件引用了其配置数据的 XML 文件,并且我在访问该 XML 文件时遇到错误。我猜这是因为 flash 正在寻找一个相对路径并且正在使用页面的 URL,这显然是一个 MVC url,因此不引用磁盘上的实际位置,因此 XML 文件不存在。

我想显而易见的答案是更改 flash 文件以在内容文件夹中查找 XML 文件,但这意味着重新编译 flash,而且我对 flash 知之甚少,所以我想避免这样做。那么有没有办法让 XML 文件显示在与视图相同的 URL 中,所以目前,带有 flash 组件的页面位于 htttp://localhost/upload/ 所以我猜是 XML 文件需要从http://localhost/upload/flash-settings.xml访问?

如果有任何其他更好的方法可以做到这一点,而无需编辑 Flash 文件,我也对此持开放态度,

4

2 回答 2

2

将此动作添加到 FlashUpload 控制器:

public class FlashUploadController : Controller
{
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult FlashSettings()
    {
        var fileName = Server.MapPath("~/Contents/flash-settings.xml");

        return new FilePathResult(fileName, "text/xml");
    }
}

这条通往 RouteTable 的路线:

routes.MapRoute("FlashSettings", "upload/flash-settings.xml",
    new { Controller = "FlashUpload", Action = "FlashSettings" });
于 2009-07-12T20:00:30.740 回答
1

您需要设置路由机制以允许直接文件访问 /upload/ 文件夹,或者创建一个控制器操作,该操作将返回一个 XML 流(动态或从物理 XML 文件读取的流),并指向您的SWF 到那条路线。我会选择第二种选择,因为它非常灵活。

于 2009-07-12T19:58:43.817 回答