ThinkGeo.com    |     Documentation    |     Premium Support

Asp.net mvc 3

I’ve started testing MapSuit in ASP.NET MVC 3. My earlier projects were run on ASP.NET WebForms. I use MapSuit mostly to display layers (from SQL Server) over Google background and also for displaying information on the selected element (point, polygon etc). It’s simple to do it in but I wanted to try how it works in in MVC.



Using the example found at Map Suite Code Community (Use Map with MVC Framework) I can display layers but I cannot get information on the element selected on the map, or display this information e.g  to some html input.



Could I get some simple project that does it? Apart from this, is it possible to use view engine Razor for displaying a map instead of Control ASPX (as it is demonstrated in the Map Suite Code Community example)?



Wieslaw, 



We are looking for a solution so that the web edition can support the map events under the ASP.NET MVC 3 envrionment, we will give you a result next Monday if is is whether supported it or not, 



Thanks, 



Scott,



Dear Scott, 
 I was wondering whether you have any news about the map events under the ASP.NET MVC 3 envrionment. 
  
 Thanks a lot,

Wieslaw, 


Sorry for the inconvenient, we made a simple sample based on the ASP.NET MVC 3  platform, but it seems that cannot deal with the click event correctly, at first we guessed maybe the problem is from the web edition, it does not support the MVC mode better, so I commented the map control on the page and just put a button on the page and trigger its click event, but when I clicked on the button, it still cannot be triggered. Please check the attached sample, you can set a breakpoint in the Buttont1_Click event and track the processes.
 
Also in the sample application, you can see I commented the map control on the TGMap user control, you can uncommented the code for map control and Page_Load event to run the sample, you can see the map can be displayed correctly, just the click events cannot be capture under the ASP.NET MVC 3 platform.
 
If the ASP.NET MVC 3 mode cannot deal with the events of user control, I suggested you to look for another way to integrate our web edition,
 
If you have any more questions please let us know,
 
Thanks,
 
Scott,

MapMvc.zip (399 KB)

Those of you trying to use Map Suite Web in an MVC app may find this helpful.  I'd appreciate hearing from anyone who has found other/better ways to do this.


We've been able to use Map Suite Web in an MVC2 application to a limited extent.  Basically, we can accept input from the user and refresh the map based on that input plus we can handle a map click event, as follows:


1. Use an aspx page with code-behind as the MVC view page.  Create the map in Page_Load as you would in a webforms application. 


2. Add an html base tag in the page head block with the full url to the apparent view folder (needed to correct relative references for some of the map api calls).  For example:


/Map/Views/" />  (where Map = controller name and Views = MVC root Views folder)


3. Add the following to the httpHandler nodes (handlers node for IIS7) of the web.config files in the MVC Views root folder and in the application root (for latter config file you may need to use path="/map/*_GeoResource.axd", where 'map' in this case is for the controller 'MapController'). 


<add verb="*" path="*_GeoResource.axd" type="ThinkGeo.MapSuite.WebEdition.GeoResourceFactory" />


5. For updating map based on a query, show a form to obtain the user's query criteria and then post it back using ajax to a controller action that (1) stores the criteria in session and (2) returns a script to force the page to refresh.  The criteria in session are used by the map page when it reloads.


4. For click handling, add a script to the page to handle a click event on the map, as follows:


var OnMapClick = function (e) {


var lonlat = this.getLonLatFromViewPortPx(e.xy);


var params = "x=" + lonlat.lon + "&y=" + lonlat.lat;


CallActionWithParams("Map", "MapClick", params); // this is a function we use to call the MapController's MapClick action using AJAX post with params supplied


}


3. Set the OnClientClick event handler on an overlay (we used a HighlightOverlay):


Map1.HighlightOverlay.OnClientClick = "OnMapClick";


4. Create an action on the controller that takes parameters x and y as double, does the processing you want, and sends a script back to refresh or redirect the page via javascript.


It's a bit of hack, but it's working...



Chuck, 
  
 Thanks for your suggestions on that, I ever tried that, but it still didn’t work, maybe the problem is from the MVC 3, you talked about MVC 2 with web edition, whatever, it is still a good suggestion. When we are available we will do some more researches based on the MVC 3 mode and share the investigation results, 
  
 Thanks, 
  
 Scott

Just curious if Map Suite Web and/or Map Suite Silverlight has support for MVC 3 yet?  If not, are there any targeted dates for support of this?  Thank you.



Hi Mac, 
  
 Currently WebEdition and SilverlightEdition don’t support MVC 3 yet, these new features are still under discussion, it should be a long way to integrate them into our products, we’re deeply sorry for the inconvenience. 
  
 Regards, 
  
 Ivan

I’m sorry for digging up an old post, but I felt it would be better then opening a new post. It has been 6 months no since this discussion ended. I am wondering if the discussion came to a conclusion. And, if so, what the result was. 
  
 I would really like to use mapsuite in a MVC3 enviroment. 
  
 Regards, 
 Casper

Hi Casper,  
  
 Our web edition can be used with MVC but it’s not recommened because it wasn’t specifically designed for the MVC architecture.  
  
 Here we have another post talked about MVC and mapsuite web eidtion. You can have a look at them:  
  
 gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/2/aft/7217/afv/topic/Default.aspx   
  
 We also have an item on the Enhancement Tracker website where the customer can vote that enhancement up if MVC is important to you.  
  
 Here is the link: helpdesk.thinkgeo.com/EnhancementTracker  
  
 Any question please let us know.  
  
 Regards,  
  
 Don

Hello all,



It may interest you to know that in response to feedback like yours, we have developed and launched a new Map Suite control dedicated to ASP.NET MVC development.  The initial beta of Map Suite MVC Edition is available for immediate download; if you're still interested in MVC development with Map Suite, this is the edition for you.  It's ideally suited to targeting mobile and touch-based devices and gives you greater control than Webforms in numerous areas.



You can find more information about the MVC Edition here.



Let us know if you have any questions, or feel free to post your comments in the MVC Edition forum!



Thanks for using Map Suite,

The ThinkGeo Team