Scott Hanselman

This Developer's Life 1.1.2 - Drive

January 29, '11 Comments [4] Posted in Podcast
Sponsored By

12-Lead In this episode of This Developer's Life Scott and Rob talk to 4 entrepreneurs about the risks they take, and what's happened as a result. Dave Neilsen, Tom Preston-Werner, and Nate and Niki Kohari.

Download Here

In this episode we talk to 4 entrepreneurs about the risks they've taken - and what's happened to them because of it:

  • Dave Neilsen tells us about working only for himself and what sleeping on a couch in a basement storeroom feels like
  • Tom Preston-Werner talks to us about founding Github and turning down $300,000 from Microsoft
  • Nate and Niki Kohari talks to us about starting up, and then selling, a tech company while being married

 

You can download the MP3 here (58 minutes) and visit our site at http://thisdeveloperslife.com.

Please consider subscribing with iTunes, or Zune. Or if you have a BitTorrent client and would like to help save us bandwidth money, as well as the bragging rights of downloading legal torrents via RSS, get our Torrent Feed at ClearBits.

See you next time!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Hanselminutes Podcast 251 - HTML5 Basics with Mads Kristensen

January 29, '11 Comments [0] Posted in ASP.NET | ASP.NET MVC | HTML5 | Podcast
Sponsored By

html5logoScott chats with Mads Kristensen about HTML5? What exactly is this thing? Is it evolutionary or revolutionary? Should you start working with HTML5 now, or should you wait  for some unknown future?

Download: MP3 Full Show

NOTE: If you want to download our complete archives as a feed - that's all 251 shows, subscribe to the Complete MP3 Feed here.

Also, please do take a moment and review the show on iTunes.

Subscribe: Subscribe to Hanselminutes or Subscribe to my Podcast in iTunes or Zune

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface and developer tools, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET AJAX,MVC,Silverlight,Windows Forms and WPF. Enjoy developer tools like .NET Reporting, ORM, Automated Testing Tools, Agile Project Management Tools, and Content Management Solution. And now you can increase your productivity with JustCode, Telerik’s new productivity tool for code analysis and refactoring. Visit www.telerik.com.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Hanseminutes Podcast 250 - Professional Technical Speaker Tips from Scott with Drew Robbins

January 29, '11 Comments [1] Posted in Podcast | Speaking
Sponsored By

shanselman_1295085070_69It's show 250! "Scott and Drew are shattered, having just finished presenting 8 solid hours of technical but upbeat content in The Netherlands. They're doing WebCamps and take a moment to talk about presenting. How do you start? How do you stay focused and recover from errors? How can you move up from smaller venues to the big rooms? All this, plus Scott's lost his voice."

Download: MP3 Full Show

NOTE: If you want to download our complete archives as a feed - that's all 250 shows, subscribe to the Complete MP3 Feed here.

Also, please do take a moment and review the show on iTunes.

Subscribe: Subscribe to Hanselminutes or Subscribe to my Podcast in iTunes or Zune

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface and developer tools, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET AJAX,MVC,Silverlight,Windows Forms and WPF. Enjoy developer tools like .NET Reporting, ORM, Automated Testing Tools, Agile Project Management Tools, and Content Management Solution. And now you can increase your productivity with JustCode, Telerik’s new productivity tool for code analysis and refactoring. Visit www.telerik.com.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Mixing Razor Views and WebForms Master Pages with ASP.NET MVC 3

January 25, '11 Comments [16] Posted in ASP.NET | ASP.NET MVC | VS2010
Sponsored By

I've spent the last few weeks travelling around presenting WebMatrix, Razor and ASP.NET MVC 3 to folks. Many people have existing WebForms apps or MVC apps with WebForms Views. The question has come up a number of times, "Can I mix Razor Views and WebForms Views in a single ASP.NET MVC application?"

The answer is, "No, Yes, and Maybe, But It's Not Supported."

Most commonly the scenario is that someone has an existing WebForms (ASPX) Master Page that works nicely, and they now want to include a few Razor pages in their application but don't want to maintain two effectively identical Master Pages (one for ASPX, one for Razor). They want to share their WebForms Master with both WebForms and Razor Views.

First, the No.

You can't directly have a Razor Layout with WebForms Views, or a WebForms Master with Razor Views. While the concepts are similar, layouts are not masters and the concepts aren't exactly interchangeable.

Second, the Yes.

However, Html.RenderPartial or Html.RenderAction is an opportunity to move between view engines. As Eilon Lipton says, the idea of a partial view or controller action is a first-class concept in ASP.NET MVC, but master pages are implementation details of the specific view engines.

You can put shared content in Partials then call them from wherever. For example, from Eilon's suggestion, let's say you had these three WebForms partial views:

  • Header.ascx: Contains top navigation, menu, etc.
  • Footer.ascx: Contains copyright notice, privacy link, etc.
  • SearchBox.ascx: Contains search box implementation.

Then you have a basic WebForms master that references the above three user controls.

  • WebFormLayout.master: Lays out with the controls from above.
  • Page1.aspx: Uses WebFormLayout.master.
  • Page2.aspx: Uses WebFormLayout.master.
  • Page3.aspx: Uses WebFormLayout.master.

Then let's say you have a Razor Layout (Razor Layouts are like WebForms Masters) that reference to the same three WebForm user controls.

  • _RazorLayout.cshtml: Lays out with the controls from above.
  • Page4.cshtml: Uses _RazorLayout.cshtml.
  • Page5.cshtml: Uses _RazorLayout.cshtml.
  • Page6.cshtml: Uses _RazorLayout.cshtml.

This is the cleanest, easiest, and most supported way for doing things. You will have to have some minimal duplication between your Razor Layout and your WebForms Master, but most of the shared content is in the .ascx partials. You can mix this up as you like, but you get the idea.

Maybe, But It's not Supported

Matt Hawley from CodePlex took a look at this problem and blogged about his own solution for CodePlex. While it might feel like this should be a simple task, it's tricky because WebForms builds up a control tree and then renders it, while Razor is an all new system that's closer to a single pass template. Matt wants to directly share a WebForms Master page.

His solution is

  1. There's a web forms master page
  2. There's a web forms view page called "RazorView" in the \Shared folder
  3. The aspx view renders a partial in the content placeholder that is the actual razor view
  4. There are some new added RazorView extension methods for the controller that return a ViewResult.

Seems complex, but it's actually pretty straightforward. For example to get output like this browser screenshot using Matt's technique...

image

...we start with our WebForms View Site.Master:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
</head>
<body>
<div>
<h1>I'm a WebForms Site.Master Page View. Seriously.</h1>
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
</body>
</html>

This is a normal master page. Here's our also normal Index.cshtml (Razor).

<h3>This is the index page. I'm Razor. We've clearly broken some kind of law to be at this point, right?</h3>

This page is basically nothing, and doesn't have a layout or anything specified. 

However, Matt has some extension methods he's added to the Controller class. Instead of returning View() from his controller action, he returns RazorView() like this.

public class HomeController : Controller
{
// GET: /Home/
public ActionResult Index()
{
return this.RazorView();
}
}

Just a reminder as it begs repeating, RazorView is an extension method. Here's the whole ControllerExtensions class from Matt.

public static class ControllerExtensions
{
public static ViewResult RazorView(this Controller controller)
{
return RazorView(controller, null, null);
}

public static ViewResult RazorView(this Controller controller, object model)
{
return RazorView(controller, null, model);
}

public static ViewResult RazorView(this Controller controller, string viewName)
{
return RazorView(controller, viewName, null);
}

public static ViewResult RazorView(this Controller controller, string viewName, object model)
{
if (model != null)
controller.ViewData.Model = model;

controller.ViewBag._ViewName = GetViewName(controller, viewName);

return new ViewResult
{
ViewName = "RazorView",
ViewData = controller.ViewData,
TempData = controller.TempData
};
}

static string GetViewName(Controller controller, string viewName)
{
return !string.IsNullOrEmpty(viewName)
? viewName
: controller.RouteData.GetRequiredString("action");
}
}

Matt's solution is clever in its simplicity. When he calls RazorView() he's returning a ViewResult that's a WebForm View, even though we want a Razor one. This satisfies the whole WebForms master pages system. However, the WebForms view called "RazorView" exists for only one reason. It calls RenderPartial, as that's the right way too switch between view engines.

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>I'm a secret WebForms View that lies to everyone and renders Razor stuff. Ssssh! Delete this line!</h2>
<% Html.RenderPartial((string) ViewBag._ViewName); %>
</asp:Content>

Of course, when you use this, remove the <h2>, that's just for illustration. This view is only a shim that enables the switch.

So there you go. Two good options for mixing WebForms and Razor in your ASP.NET MVC application. The first has a little duplication, but is clean. The second is a little trickier and you're on your own, but you can directly share Master Pages between WebForms and Razor Views. You can get the code for the second over at Matt's blog.

Thanks Eilon and Matt!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Hanseminutes Podcast 249 - On WebMatrix with Rob Conery

January 22, '11 Comments [4] Posted in Podcast | WebMatrix
Sponsored By

image Microsoft WebMatrix was released on the 13th of January. Some folks have said its very existence is confusing. Do we need another IDE? What's Microsoft trying to pull here? Scott talks to ex-Microsoftie Rob Conery on his unfiltered take.

Download: MP3 Full Show

Links from the Show

NOTE: If you want to download our complete archives as a feed - that's all 249 shows, subscribe to the Complete MP3 Feed here.

Also, please do take a moment and review the show on iTunes.

Subscribe: Subscribe to Hanselminutes or Subscribe to my Podcast in iTunes or Zune

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface and developer tools, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET AJAX,MVC,Silverlight,Windows Forms and WPF. Enjoy developer tools like .NET Reporting, ORM, Automated Testing Tools, Agile Project Management Tools, and Content Management Solution. And now you can increase your productivity with JustCode, Telerik’s new productivity tool for code analysis and refactoring. Visit www.telerik.com.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.