ReportViewer with ASP.net MVC 3 - asp.net-mvc-3

I have developed SSRS report and deployed on server. The report has dropdown, based on dropdown selection report data varies since this dropdown value is passed as Parameter to report. The report works just fine when accessed directly.
Now I have integrated this report into my ASP.net MVC 3 application using ReportViewer.
When report is accessed thru web application page appears to be loading correctly but when I click on View Report it shows message "Loading" for a while and then displays nothing.
I'm clueless on this and not understanding this behavior at all.
UPDATE
I found solution at https://stackoverflow.com/a/2547454/287100

This is a particular question where you need to combine ASP.NET web-forms with MVC, which is perfectly fine. Because, ReportViewer control won't work if you place it in an MVC view, as it requires ViewState.
How to make SSRS work? well follow this article - Incorporating ASP.NET MVC and SQL Server Reporting Services
Another post that shows benefits of combining web-forms with mvc - Viewing SSRS Reports in an ASP.net MVC Site

Related

Blazor Hub Does not Connect Across Entire MVC App

I upgraded an ASP.NET Core 2.2 MVC project to 3.0 in order to use a Blazor component in one of the views of the application. After setting up Blazor in the MVC project and running it, the Blazor hub connects just fine as shown in the browser console screenshot below:
but when I navigate to the page that contains the blazor component or another page besides the index page for that matter, I get this:
As shown in the screenshot, it includes the name of the controller the url that negotiates for a websocket connection and throws a 404. If this is not a bug, how can I fix this to work on every view of the application or the view that contains my component to say the least?
What I needed to do was to set the app base path in shared.chtml and Boom! Problem Solved.

How to get Orbeon Forms embedded into an ASP.Net MVC3 app?

Background
I'm investigating the use of Orbeon Forms to integrate into our
ASP.NET MVC3 web app by building a simple MVC3 app to figure stuff
out.
I have a Win2008 R2 std server running Tomcat 7 and Orbeon 3.9.1 PE
trial on our HyperV server. This is working and I can create forms and
then use the forms to submit data.
I've created an empty MVC3 app on my local dev machine. It has an
Index action on the Home controller that returns a page that has a
bunch of links to the add new URLs of some of my forms on the Orbeon
installation. The links access an Add action on the Home controller
which uses a WebRequest object with the ?orebeon-embeddable=true
querystring parameter tagged on the end to get the definition of the
Orbeon submit form page. I replace the relative URLs in what I get
back to make them absolute. I then insert that into a basic view and
display it.
Problems
HOWEVER! As soon as I do interact with the Orbeon form in anyway, e.g. click inside a single line textbox field (IE9) I get a JS error
in the script file "orbeon-[random guid style value].js" line 121 with
the line "AjaxServer.exceptionWhenTalkingToServer(e,formID)"
highlighted with the error being "formID is undefined".
I'm not sure where to start looking here as I am unfamiliar with
Tomcat and only know what I can decipher from the Orbeon docs.
Anybody tried to embed the form runner like this and experience this
error?
What I tried next
[Update]: The MVC Json() method got me thinking that perhaps the
Orbeon test site I set up on the VM did not like the fact it was
getting AJAX requests from the MVC app on my dev machine. With this in
mind I tried installing the CORS filter into the Orbeon app from
dzhuvinov.com. According to the docs after adding the relevant
config to the web.xml file the default behaviour is to pretty
unrestrictive, i.e. it should let everything through. Unfortunately
after restrating Tomcat this didn't help.
[Update 2]: Okay seems like the CORS docs are a bit out of date and
the defaults are seemingly the opposite so setting the initial values
for that seems to sort that out somewhat - although IE9 still gets the
JS error message. Meanwhile in FireFox 12 things are going better but
now the issue is how to pass the JSESSIONID cookie Orbeon sends me
back when I embed the runner in the MVC view such that when you
trigger any of the AJAX on the Orbeon form it sends the JSESSIONID
cookie as well.
Well I guess my title and info were slightly misleading so I may as well close my own question with the follow "answer".
In order to embed in an MVC3 app (read as any non-Java backend I would imagine) Orbeon Forms Runner and have it work I had to do the following:
Configure the CORS filter for my install of Orbeon Forms on Tomcat 7 (Dzhuvinov.com) to allow cross-domain AJAX.
In HTML partial's returned from Orbeon make relative URLs beginning /orbeon/xforms-server/ absolute calls to a custom proxy. Store the JSESSIONID in the ASP.NET MVC Session object.
Write controller actions for the proxy to handle requests. This simple proxy forward requests on to the Orbeon Forms install after setting the JSESSIONID cookie with the value stored in (2).

Telerik report in ASPX which accepts an array

I have an MVC3 application and we are using Telerik Reporting. The Telerik report viewer must be hosted in an ASPX page named ReportPage.aspx. In its PageLoad method is logic to determine which report to display based on the querystring. I want to originate a request for a report from an MVC view and I would like the view to remain present, so I either need a popup or a new browser window for the display of the report. Once the user closes the report window, the original window should display intact.
I believe I can meet the above requirements, but here is the complication. I need to pass an large array of integers to ReportPage.aspx as an argument, so querystring won't work for me. As far as I know, I need to use a JSON object and a WebMethod to pass the array. But I don't see how the WebMethod (even if it is a method of ReportPage.aspx) can open ReportPage.aspx.
Does anyone see a way to make this work?
If your asp.net web site and your MVC web site have access to a shared database then:
Store dynamically the large array in the shared database and assign a unique report ID
Pass in the query string the report ID only.
In the aspx page load the report using the report ID
Run a sql job every night that deletes the previous day report IDs. No need to store them forever

Two forms (one in layout and one in Page) how to handle in asp.net mvc3

I am working on a mobile website in ASP.NET MVC3. I have a page where i have search bar in my header. this header is coming from my Layout page which is common to all other Views. And inside my specific page, I have page specific content(forms).
For my Customer/Add action, I return the Add View of Customer which is strongly typed to my CustomerViewModel. I will have form tag in my Add View which will be posted to HttpPost Add Action method when form gets submitted. That is fine. My question is how will i handle the search box content ? I believe only one form is allowed in the page.So if i have a SearchViewModel which is binded to my Search View(Partial), It is going to be 2 forms in my page. So i can not do that.
I can handle the search part by reading the content in java script and calling another action to get Search results.Is that the only way to do that ? I am worried about those devices where java script is disabled. What should i do ? Please advice
No. You can have more than 1 form on the page. In fact, here you should. Your Add Customer page should submit to 1 action method, but your search form should submit to a different action method.
If you are familiar with webforms, that framework only allows you to have 1 form on the page, but not because HTML requires it. Webforms requires it because it is the only way the framework can carry all of the data from various server controls across POST requests (using ViewState). Webforms has historically not been very HTML or HTTP friendly.
You just can't have forms nested within other forms in HTML, but it is completely legal (and recommended in MVC) to have more than 1 form on a page.
As for AJAX, I would not worry about devices that do not have javascript enabled. There are only like 6 or 7 people on the planet that don't have javascript on their web devices, and if someone disables javascript, they won't be able to experience 99% of the rest of the web anyhow.

Postback in report viewer using MVC3

I am using Report Viewer control with the MVC3. When I create a report say Report2.rdlc , and there are 150 records , the pagination of the Report viewer is done. When I click on the page 2 button, a postback function is called , which throws an error as i am using MVC3. Is there any workaround to achieve the records in the page 2 to be displayed.
Or is it possible to display all the records in one page itself? I tried
1) Increasing the height of the Report VIewer and the Report.
2) Setting the ShowPageNavigation to false.
Please Help.
Thankyou in advance.
You have the ReportViewer control inside an MVC view? I have only seen a basic implementation work with hacks/workarounds, often advanced functionality is broken as ReportViewer relies on things from WebForms that aren't available in MVC.
You best approach would be to use an iframe and a WebForm page to get the full functionality or have you tried turning on/off async rendering?

Resources