0

我在 .web 部件上的 Microsoft Visual Web Developer 2010 Express 中创建了一个 ASP.NET 项目,并包含了一个 Silverlight 项目。我创建了一个音乐博客之类的东西,我想将“路径”值传递给 Silverlight。用户上传文件,曲目将在 Silverlight 应用程序中播放。

例如,我在数据库中创建了一个名为 Posts 的表和另一个从 Posts 派生的名为 Track 的表,其中存储了文件的路径。我还包含在我的 Index.aspx 文件中:

<form id="form1" runat="server" style="height:50%">
<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="770" height="530">
      <param name="source" value="ClientBin/MusicBlog.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="3.0.40818.0" />
      <param name="autoUpgrade" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Holen Sie sich Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>

创建帖子时,我调用:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(Posts model, HttpPostedFileBase file)
    {

        if (ModelState.IsValid)
        {
            if (file != null)
            {
                if (file.ContentLength > 0)
                {
                    var fileName = Path.GetFileName(file.FileName);
                    var path = Path.Combine(Server.MapPath("~/Music"), fileName);
                    file.SaveAs(path);
                    Track track = new Track();
                    track.Path = path;
                    model.Track.Add(track);
                    DateTime today = DateTime.Today;
                    Posts post = new Posts();
                    /*post.Body = model.Body;
                    post.Created = model.Created;
                    post.Modified = model.Modified;
                    post.Title = model.Title;*/
                    model.Created.ToLocalTime();
                    postRepository.Create(model);
                    return RedirectToAction("Index");
                }
                else
                {
                    ModelState.AddModelError("", "The given Path is invalid");
                }
            }
            else
            {
                ModelState.AddModelError("", "The given Path is invalid");
            }

        }
        return View(model);
    } 

我现在如何将路径传递给 Silverlight 中的播放器,以便我可以在嵌入在 ASP.NET 页面中的 Silverlight 应用程序中播放曲目?

4

2 回答 2

0

要让 Silverlight 访问本地文件系统上的轨道,用户必须启动选择,您不能“为他们”访问文件系统。您可以在 Silverlight 浏览器外应用程序中以提升的信任度运行(实际上您可以在Silverlight 5 in browser中执行此操作,但这是一个边缘情况)。

为什么不让 Silverlight 应用程序提示曲目并同时上传?

于 2012-09-23T03:15:04.460 回答
0

Create an overload for Index

public ActionResult Index(string trkPath) { }

and add Route Values while redirecting

return(RedirectToAction("Index", new { trkPath = track.Path }));

and access the params in silverlight

NavigationContext.QueryString["trkPath"]
于 2012-09-23T03:10:41.223 回答