Silverlight app works in aspx page, not MVC Razor View - asp.net-mvc

I'm having trouble getting my Silverlight app to show in an MVC3 Razor View.
When I add the application and it generates the test page (TestAppTestPage.aspx in my case), I can browse to the page and the app works fine. If I copy the same code to an MVC Razor view, then browse to the controller action, nothing happens with the application:
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/TestApp.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="5.0.61118.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
If I look at the developer console for Chrome, the only thing I see different is the following warning: "Resource interpreted as Other but transferred with MIME type undefined". I'm not sure if this is related.
I've looked at various guides on Silverlight and MVC, and copying relevant portions of their code produces no results either. I've played with adjusting the path, using relative urls, nothing. I've also checked IIS settings, but because it works fine in the aspx test page, I suspect that's not the cause.

Based on mfanto's comment, turning my comment into an answer.
Was guessing in my comment, but I've had issues when NOT using Url.Content for any external files. So the fix would be to use something like
<param name="source" value="<%= Url.Content("~/ClientBin/TestApp.xap") %>" />
Note that that is from an MVC 2 app.

Related

Whats the best way to embed a flash file from a link?

I have looked around, but still have not found a very good answer to my question.
I would like to know how I can embed a flash game into my website Via HTML or Java in order for it to play.
I have the SWF file, but am unable to put the file on the site, so I got this link "https://dl-web.dropbox.com/get/flight.swf?w=AAAYS8vwABuIJB3QbyhV1kSX778W0mXh4xRoQ0ADqm4w6g" that is JUST the flash game
Whats the best way to insert this into my site?
Below is a general script which will embed your flash movie in a html page, theres several ways to do this but below will work just copy and paste the code on to your html page in the body area.Check the adobe website if you need other parameters or more information.
<object id="yourmovie.swf" width="550" height="450" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" align="middle" bgcolor="#ffffff">
<param name="allowScriptAccess" value="sameDomain" />
<param name="quality" value="high" />
<param name="src" value="http://www.yourwebsite/yourmovie.swf" />
<param name="allowscriptaccess" value="sameDomain" />
<param name="pluginspage" value="http://www.macromedia.com/go/getflashplayer" />
<embed id="slots.swf" width="476" height="321" type="application/x-shockwave-flash"src="http://www.yourwebsite/yourmovie.swf"
allowScriptAccess="sameDomain" quality="high" allowscriptaccess="sameDomain"
pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" bgcolor="#ffffff" />
</object>
To use a link from java my option will be create a button/link thats open another window with the above on that html page

whats the best way to include silverlight pages into an asp.net-mvc site

i have an asp.net-mvc website and i want to merge in some functionality from a silverlight app. i could rewrite but for the time being i wanted to see if there is any clean way to "include" a few silverlight pages inside my mvc app.
what is the recommended way of doing this ?
The New Silverlight Application Wizard allows you to choose ASP.NET MVC as host application and it will setup the necessary parts:
All that you need is to embed the Silverlight application in any view:
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/SomeSlApp.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
You could also write a HTML helper allowing you to achieve this in a cleaner way.

Can I use the silverlight server control inside an asp.net mvc 2 page?

I can't find it when typing
<asp:
With MVC you don't use webform controls. <asp:...> are tags used by webform controls. Silverlight doesn't require a webform control to work anyways, you just need to add the following HTML to your view:
<object id="objYourSilverlightControl" data="data:application/x-silverlight-2,"
type="application/x-silverlight-2" width="500px" height="500px">
<param name="source" value="../ClientBin/youSilverlightControl.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<param name="windowless" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0"
style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181"
alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
I think the webform control that you are referring is no longer supported anyways (it might be still but I have never needed to use it).

Silverlight Host App only showing loading image

Im attempting to use Silverlight and MVC together. After creating a simple Silverlight application I attempted to view it using the MVC host application (using the provided aspx and html pages). The issue is that when I view the page all I see is the Loading image (with a 100% value) and that is all. It never displays my app!
Here is the html for the aspx page:
<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/MVCSilverlight.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="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>
And here is the xaml for the application:
<UserControl x:Class="MVCSilverlight.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:uriMapper="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"
mc:Ignorable="d"
d:DesignHeight="500" d:DesignWidth="500">
<Canvas x:Name="LayoutRoot" Background="Crimson">
<TextBlock Text="Hello World" ></TextBlock>
</Canvas>
</UserControl>
Everything else in the application is standard code (code that was generated when I created the project). Has someone seen this issue before? Is there something that I'm missing? I'm very new to both technologies to any info will be very helpful.
When you run the app check that VS has attached to the browser process for Silverlight debugging (not Script).
Also check your App.xaml.cs contains:-
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage();
}
The loading splash screen will remain in place whilst the RootVisual remains unset. So either the code just doesn't set it or an error is occuring (and for some reason your not being alerted of the error) so that code never reaches the assignment of RootVisual.
Also get yourself a the free HTTP debugging tool called Fiddler so you can trace all the actual HTTP conversations, perhaps the xap isn't being downloaded at all for some reason. In fact that would be my guess, the MVC routing might be doing something undesirable with "ClientBin/MVCSilverlight.xap".

Silverlight object in an asp.net MVC view

I am trying to incorporate a silverlight object in one of my controller's views and for some reason the silverlight doesn't display at all... everything works fine in the aspx and html test page.
my code in the view looks like this:
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="../../ClientBin/PatientForms.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
</object>
in my view i get nothing at all, if i try to run it in IE64 bit i get the You need silverlight img link as listed in the object's content. I have googled and googled but to no avail... any ideas?
Not exactly sure what I did but I think the containing div wasn't auto sizing to the size of the silverlight content, when viewing in Ie7 my content was visible so I set manual height/width to the div and now I can view in firefox/ie8.
Success!~

Resources