ASP.NET MVC
This year we're evolving mvcConf into something bigger and better. After many discussions and planning around everyone's busy schedules, we came up with aspConf - The Virtual ASP.NET Conference.
As the main site states:
aspConf is a virtual conference focused on one thing: showcasing
the ASP.NET stack as the platform for great web applications.
We've revamped the popular mvcConf
conference to serve all of ASP.NET,
...
We’re getting ready for the next version of MvcConf on Tuesday, 2/8/2011 from 8AM-5PM CST! What is MvcConf? MvcConf is a virtual conference focused on one thing: writing awesome applications on top of the ASP.Net MVC framework. Your brain will explode from taking in so much hard core technical sessions. Sounds fun eh? This is a community event and we want the best and brightest sharing what they know. We intend to record each session and make them available online for viewing. We intend to make the videos available free of charge, depending on conference sponsorships. ...
Last week, I had the pleasure of presenting at DevConnections at the Mandalay Bay in Las Vegas, NV. I had a total blast interacting with attendees, fellow speakers and checking out the vendor hall. The logistics for the conference were remarkable given there was approximately 2,800 people in attendance! For those of you that attended my presentations, thank you! I hope you were able to get something out of them; I had a blast presenting and interacting with you in each of them. Also, I had a great time with the open spaces sessions. There was lots of good...
The other day I was working on some features for MVC Turbine when I got a random idea about how we can use a new feature that comes with the Razor view engine (VE). This blog post hopefully will help out some of you in your development or least get your creative juices going. @View with Razor Views One of the new features that ships with the Razor VE is the ability to set ViewDataDictionary values through the use of a DynamicObject property. The following code shows how to do this: The ViewModel.Message call is the...
One of the new features of the Dependency Inject (DI) components from MVC3 is something called a IFilterProvider. The purpose of this component is to provide a simpler way for MVC applications to interact with filters (action, exception, result, etc.). In the previous versions, trying to achieve something like providing DI support to filters was doable, it just required deeper integration into the MVC runtime. The IFilterProvider interface is defined as: As you can see, it’s a pretty simple interface that can enable lots of opportunities if used in the right context. The MVC bits ship with an...
Lately, I’ve been working a lot with applications that expose JSON-based services to clients that care to consume their data. All of these services are nothing more than plain Controllers that return a ViewModel that’s rendered as JSON. You might be saying to yourself, “Big deal! All you’re doing is returning a JsonResult to the client! Tell us something new…” Well, as a matter of fact, that’s the whole purpose of this post. ;) How Do Things Currently Work? Right now within MVC, you have a explicit convention that a controller must follow for any action it exposes;...
I’ve been getting different questions via emails, DMs, IMs, etc. that can be summed up by this question: Once MVC3 comes out, will I need MVC Turbine anymore to provide Dependency Injection (DI) support to ASP.NET MVC? There is really no clear answer for this, so all I can say is, it depends :) For those of you that are not aware, MVC3 has added better support for using Dependency Injection (DI) within different parts of your application. This newly added support applies to: Controllers ...
Recently my good friend and fellow C4MVC junkie, Eric Hexter blogged about an event the ASP.NET MVC community is putting together called, MvcConf. What is MvcConf? MvcConf is a online conference where you can learn about real experiences creating MVC applications as well about what the future holds for creating asp.net apps based on MVC. We have scheduled community members to present on intro and advanced topics using MVC2 and we have some Microsoft product members who will talk about some of the new stuff coming out soon. Why should I care? If you’re interested in...
Recently MVC Turbine has had a lot attention, so I wanted to take the time to say “Thank You!” to those of you that have help promote it, use it, provided feed or giving it a look. Artwork In particular I wanted to say a HUGE THANKS to Hugo Bonacci (@hugoware) for donating his artistic talent and creating these awesome logos for the project. Thanks for putting up with my many draft changes and requests. The logos are awesome and I thank you for providing such a great asset to the project! ...
Last week, it was tweeted that MVC Turbine v2.1 had reached RTM. Release Notes The released bits can be downloaded from the main project site; the features it provides are (same as v2.0 RTM plus these): Instance Registration to IServiceLocator You can now add an instance of a type to the underlying container so you can address the single instance context. IServiceLocator is registered into the container ...
First of, I would like to give a huge thanks to Phil Haack for his awesome blog post, Sending JSON to an ASP.NET MVC Action Method Argument, which shows how really flexible the ASP.NET MVC can be. Also, I owe him a beer next time I see him for saving my behind and providing an actual solution to my original POSTing JSON Data to MVC Controllers post.
Namaste, Phil!
Client-side JSON ‘Serialization’
In Phil’s post, he mentions that using a model binder falls short because of the lack of validation support:
There’s one key problem with using a model binder to accept JSON....
I’m sure that some (if not many) of you know this little approach for posting data from a JSON POST action (through jQuery) to an MSMVC Controller. If you don’t, keep reading otherwise go read something more important :)
Note:
As Phil noted, what the title should read is Receiving JSON Data from An Action Method, so my apologies for being misleading on the title. To see how you can actually post JSON data, check out Phil's Sending JSON to an ASP.NET MVC Action Method Argument post.
What are you trying to do?
While working on MSMVC sites, I (like many of you) find...
Great minds think alike … or is it that fools seldom differ? I forget… In any note, all I can say that in this case it took three people’s work to make this possible in order to bring simplicity to the masses. Please note that this piece is a work in progress and we’re still trying to figure out how things will be at the end for these two frameworks to interact. Also, if you want more code, I suggest you check out the Fubu sample for MVC Turbine. What does it all mean, Basil? I’m not going...
The MVC Turbine bits are now compiled against ASP.NET MVC 2 RC2 which runs on .NET 3.5 SP1 and Visual Studio 2008. You can get the bits by going to the CodePlex site. Please note that this the same feature release as MVC Turbine v2.0 RTM. The following is compiled and upgraded to work with .NET3.5 in VS2008: VS2008 Templates Runtime binaries Feature Samples Nerd Dinner Sample Okonau Sample Again, as I mentioned before, the main...
The MVC Turbine bits are now compiled against ASP.NET MVC 2 RC which runs on .NET 3.5 SP1 and Visual Studio 2008. You can get the bits by going to the CodePlex site. Please note that this the same feature release as MVC Turbine v2.0 RTM. The following is compiled and upgraded to work with .NET3.5 in VS2008: Runtime binaries Feature Samples Nerd Dinner Sample Okonau Sample Again, as I mentioned before, the main development will take place onVS2010 and...
A few days ago, I blogged a response to Rob Conery’s question entitled, Why MVC Turbine? Since then, Rob has been so kind to send me an email saying Thanks for the blog post, but…Dude, I still don’t get it. Help me reach the ‘aha!’ moment. As I told Rob, after I re-reading the blog post and the tone it had, I whole heartedly agree with him: The post did not answer his question. So Rob… My apologies, mea culpa, lo siento. I really appreciate your feedback and your assistance with developing a valid message for MVC Turbine...
I would like to thank Rob Conery for posing the question:
As the project’s portal states:
MVC Turbine is a plugin for ASP.NET MVC that has IoC baked in and auto-wires controllers, binders, view engines, http modules, etc. that reside within your application. Thus you worry more about what your application should do, rather than how it should do it.
Let’s see how this plays out for your application…
Plain Old MVC Application
If you create an MVC application by using File –> New, you get the full power of the MVC framework but your application is not yet setup to take full advantage...
The MVC Turbine bits are now compiled against ASP.NET MVC 2 Preview 2 Beta and Visual Studio 2010 and .NET Framework 4 Beta 2. You can get the bits by going to the CodePlex site.
Please note that this the same feature release as MVC Turbine v2.0 RTM. The following is compiled and upgraded to work with .NET4 in VS2010:
Runtime binaries
Feature Samples
Nerd Dinner Sample
Okonau Sample
From here on out, the main development will take place onVS2010 and MVC2 as I get things setup for v3...
Since the release of MVC Turbine, I’ve been getting lots of questions about the design decisions I made around the interaction with the Service Locator that ships with the plug-in. The two main questions are: Why didn’t you use the Common Service Locator project from CodePlex? Why are we forced/constrained/etc to use generic component registration API? These questions are very valid and could be easily explained if I ever write the documentation for the project (which, I’m working on by the way). So in this post, I hope to...
I’ve blogged in the past about the extensible component model for MVC Turbine, this post is a continuation on that concept, except with views as embedded resources. Virtual Path Provider: The Secret Sauce Not sure how many of you know this, but a VirtualPathProvider (VPP) is a way to provide the ASP.NET runtime with resources from a virtual file system. In other words, you can provide files such ash web forms, scripts or anything else that’s served to the ASP.NET run time to process. To learn how to this more in detail, check...
Well, here’s the official blog post for the tweet I did last night: I figured, I should tweet the release and have people get an early access to it, then blog the same (plus more) information here. :) What is MVC Turbine? I’ve been asked many times for the 140 char description of Turbine, so here it is for the record: MVC Turbine is a plug-in for ASP.NET MVC that has IoC baked in and auto-wires controllers, binders, view engines, http modules, etc. that reside within in your application. Thus...
The whole purpose of MVC Turbine is to make the development of an MVC application easy and streamlined. This can be done through the use of a new feature of V2 called “Blades”. Essentially, a Blade is nothing more than a component (or slice) of a Turbine application since it provides a layer of abstraction to a concern of the application. For example, a Turbine MVC application ships with three core blades out of the box: MvcBlade – Performs all ASP.NET MVC related work, i.e., setup of Controller factories, View Engines, etc. ...
That’s right, get the v2 RC release while it’s hot! Version 2 of MVC Turbine, is a complete re-write of the plug-in that allows these features: New runtime framework that allows extensibility Blades (components) that are auto-registered and loaded at runtime. Introduced the Core Blades to setup the basic runtime of an MVC application: MvcBlade -- wiring for MVC related components (Controllers, View Engines, etc). ...
This past weekend while working on my talk for the Heartland Developer's Conference, I toyed with the idea of showing multiple ASP.NET MVC View Engines (VE) ‘co-existing’ within the same application. Why do that? Well, I wanted to show how using open source tools like MVC Turbine, MVC Contrib and Spark within your application, you can assemble some pretty cool stuff. And most important, it made for a really cool demo. :) Please note that this concept is not anything new. Phil has blogged about a similar topic in the past. However, this approach extends what Phil...
For those of you that follow me on twitter, you’ve noticed that I’ve been tweeting a lot about a new side project called MVC Turbine.
MVC Turbine is a simple way to provide flow and plumbing within ASP.NET MVC applications, or as its tag line suggest, it converts flow into useful work. A few weeks ago, I had a quick poll on twitter that asked:
As you can see, from the results, 50% of the responses where “Yes, always!” which means that you’re wanting more out of your MVC application.
Please, don’t get this the wrong way: I’m not saying that Phil...
I know I’ve been quiet for the past couple of weeks, so hopefully this post makes up for some of the silence. :)
A while back, I voiced my opinion on how actions within should be small and to the point. After this post, I started to think on how we can make ASP.NET MVC do more for us based on a convention. Take the following code as example:
1: [HandleError]
2: public class HomeController : Controller
3: {
4: public ActionResult Index()
5: ...
Not sure how many of you out there use a URL redirection service such as tinyurl, is.gd or snurl. They come very handy when you’re trying to take a long url like: http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=des+moines+iowa&sll=37.0625,-95.677068&sspn=44.879582,87.714844&ie=UTF8&z=12&iwloc=A Into something that's a bit more manageable: http://tinyurl.com/nzqn5f How can you do this within your ASP.NET application? Well, check out miniurl on CodePlex. :) What is miniurl? The miniurl MVC application is a very simple example on how to use MVC and URL Routing to create a URL Redirection service. That means you’re...
Recently, fellow MVP and ASPInsider, Jeffrey Palermo blogged a pretty interesting idea called ActionController. Within his post, he states: My interest in this space is purely practical. I really don’t care how patterns are published. I don’t care about “being true” to the MVC pattern or any other pattern. I’m more interested in being effective with web applications on .Net. After have experience with MvcContrib, CodeCampServer, and a much larger ASP.NET MVC implementation (200+ screens), I have come to see how controllers end up searching for an identity. What is a ProductController anyway? That’s just about...
Now, I know a few days late on this blog post. Granted, at the time, I was doing a webcast on ti! :) Any way, be assured that I’ve already congratulated Phil and team on getting ASP.NET MVC released! To find out more about the intricate details, check out Phil’s post on it (remember, he’s the PM).
Now, during the time I’ve been talking with people about the MVC bits, I’m still surprised that they ask these questions (just to name a few):
Are Web Forms going away?
How do I convert my Web Forms...
As some of you already know, I blogged about my reaction to the Oxite MVC sample from the MIX Online Labs. Also, I started blogging some of my ideas for refactoring the source to make it a bit more streamlined. More importantly, I want use these posts as a way to share my ideas on how to use the new ASP.NET MVC framework. Not that I am “the source” for the right implementation, but I do want to provide another insight to the problem. Anywho…
Instead of keeping my source in zip files and bits and pieces, I created a fork...
Not sure how many of you read my first post on my thoughts on Oxite. Well, here's my offering on trying to make things a little closer to MVC by offering my perspective on the code. Please note that I want to keep these simple refactorings as conversational as possible, so if you see something that offends or upsets you with my interpretation/implementation, PLEASE COMMENT. :) Let's examine the SignIn action under the AccountController: [AcceptVerbs(HttpVerbs.Post)]
public ActionResult SignIn(string username, string password, bool rememberMe, string returnUrl)
{
PageTitle.AdditionalPageTitleSegments = new string[] { "Sign In" };
...
This past weekend some discussion sprung up around a new blog engine called Oxite. This blog engine is put out by the MIX Online team and it's used to power their blog. Now, I'm not going to rehash some of the statements made by other members of the community since there is no point in beating a dead horse. However, if you want check them out I suggest that first see Rob Conery's thoughts on Oxite as well as Scott Koon with TLC for Oxite post. The thing I do want to point out is that the team...
Can't make it to the Professional Developer's Conference (PDC) in LA? Well, we've started a new group called NotAtPDC! Chris Love is the genious behind this movement! Here's some info from him:
We are going to have live meeting sessions, links to Blogs, Podcasts and any other .NET related content featured this week. Right now we are trying to get things organized better. We will have a site live in the morning. If you want to schedule a session or something DM http://twitter.com/NotAtPDC.
Chris is in the process on getting a website up to aggregate some of the content that the...
For those of you doing MVC out there you've probably noticed that every time you create a new view within your project, the template that VS uses creates a both a .aspx.cs and a .aspx.designer.cs file for your view. A group of mvps/insiders have been talking about this topic for a bit. A small group of us feel that providing this file is a temptation that can lead to world of hurt. To us, the this code behind file is a honeypot asking for bad practices. The fact that you have a codebehind file and that you can put...