Convert Legacy ASP.NET Application to MVC3 and HTML5 - asp.net

I have an ASP.NET application which works just fine, but which is becoming unwieldy. I would like to incorporate MVC3 functionality in it for any new pages, and gradually convert all the old pages. I plan to use the Razor syntax.
I've got it working. I can serve up pages just fine. It was a bit of a battle, but things looked good. I believe I have all the directory structure and the referenced DLLs.
My only real problems are with the IDE:
I cannot select "Add Controller.." when I right-click on the Controllers folder. Ditto for Views, and "Add Area..." from the project right-click menu.
I cannot add template items related to MVC3 (or MVC2, which I also have installed).
I also cannot validate HTML5 (all tags are invalid), but I think this is a separate issue, because this functionality doesn't work on my MVC3 projects either.
I would not even know that these things were missing if it didn't work perfectly for a project created as an MVC3 project (with Razor syntax), so it must be something specific in the solution or the project, but I cannot find it anywhere.
My question:
Where do I change this so that the IDE acknowledges it as an MVC project?

The reason why the menus are not coming is visual studio IDE do not consider this as a real ASP.NET MVC project because the project file does not say so. So we should update the project file to include the project type guid for ASP.NET MVC and then the IDE willl start supporting the menus specific for ASP.NET MVC type project.
Step 1
Go to your solution explorer and unload the existing ASP.NET project by right clicking and selecting “Unload Project”
Step 2
Right Click the Project in solution explorer and select “Edit your project file name“
Step 3
Add the below entry to it inside the ProjectTypeGuids section
{E53F8FEA-EAE0-44A6-8774-FFD645390401};
Save. Reload the Project and you will be good now.
I clearly explained it here in a blog post.

Related

How to add Web Pages 2 with razor syntax in an empty web application project in Visual Studio 2012?

I want to create simple Web Pages 2 applications.
I want to use the File->New->Project->Empty Web Application and not the File->New-Web Site.
After i create a new empty web application i cant add a .cshtml file..
The only way that i could do it is:
Nuget -> Install Web Pages 2 with razor libraries
Add->New->Razor MVC View
I am NOT putting the .cshtml file in Views directory. Instead i leave it in root and name it Default.cshtml
Is THIS really the way to do it?
Actually, you can do this. I've done it this way.
Open VS 2013
From the main menu: File > New > Project
Under Installed Templates
Select
Templates
Visual C# (or VB)
Web
(do not select VS 2012)
Select ASP.NET Web Application from the list of projects on the right of screen
Next Screen - Select Empty Project, Check Webforms
Run once, get error for no default page
Only files in project
Global.asax
Web.config
Select "Project" in Solution Explorer
(do not select the Solution)
Select Manage NuGet Packages
Microsoft ASP.NET Web Pages
Microsoft ASP.NET Web Pages Data (Important! Includes WebMatrix dlls)
Add Layout and View pages
Notice the code is recognized as an error
If you run, you get a Server Error that ViewBag does not exist
Change ViewBag to Page
Run again. You should be able to develop like standard web pages but with Razor and no viewstate.
That should be it. I've been doing this since VS 2012 and love the results.
I contacted Scott H. at MS about adding this as a project type. Didn't get
far. He didn't see the point in doing a project this way. IMHO, I disagree.
Web Pages 2 applications are Web Sites, not Web Applications, so you should do the following:
File » New Web Site » ASP.NET Web Site (Razor 2)

Best practice for integrating a silverlight control in a Asp.Net Solution

I need some advice regarding the handling of a Silverlight control that I need to integrate into an existing Website, coded with Asp.Net.
I'm using SVN, Visual Studio 2010, Framework 4.0. I need to create a simple silverlight control and I need to have it embedded in one of my asp.net pages.
My question is basically, what is the best practice on where to put this Silverlight control?
1) Creating a new project for my Silverlight control and then refer to it through an external tools within my website? (importing only the .xap?)
+ Reuse
- Seems lot of extra work for a small control
2) Create a new project withing my website solution, compile it next to my website and create a post build event to copy the .xap generated into a ClientBin folders in my website?
- Lack of reusability
+ Easy to make small modifications in my Silverlight component.
3) Another solution I don't know yet??
Thanks for your advices
Do not worry about number of projects. Reuse is far more important (we have solutions with over 100 projects).
Create a new Silverlight application, then add a Silverlight relationship between the website and your new Silverlight application:
Right-click on your website project and select Properties.
Choose the Silverlight Applications tab on the left side
Press Add...
Leave Use an existing Silverlight project in the solution checked and select the project you want to add from the Project dropdown.
Leave Add a test page that references the control checked if you want a separate test page for your application.
Press Add and you are done.
The website will now build your Silverlight application and include the output Xap file in its ClientBin folder.
If you check "add a test page", that will give you sample HTML/ASPX pages and the JavaScript you need to run the Silverlight component anywhere in your ASP.Net app.

Visual Studio 2010: convert website project to web application project?

I have an existing solution in VS2010. When I click the properties of my project I get the view as can be seen in image1.png:
When I create a new empty ASP.NET web application and click the properties of my project I get the view as can be seen in image2.png:
A huge difference.
Now I'm implementing this code here: http://wcf.codeplex.com/wikipage?title=Getting%20started:%20Building%20a%20simple%20web%20api
And that tutorial assumes I get a view as I've shown you in image2.png
In image1 and image2 I've also marked the menu items: "Website" and "Project"
This makes me assume that I've created a website application whereas I need something different (I'm thinking a web application project).
Not sure what to do now, I need to convert my current application to another thing, but to which type and how to do it?
I also came accoss this post: http://blogs.msdn.com/b/webdevtools/archive/2009/10/29/converting-a-web-site-project-to-a-web-application-project.aspx
But before I start screwing up everything :P Is that what would solve my problem?
It should be possible to use either a web site or a web application project. In the example on the link you've posted, they use the predefined template for ASP.Net MVC Web Applications. This has several advantages - it sets up the structure and other resources for you - it's effectively a template.
For the purposes of the tutorial, why don't you just set up an application that way? If you've already written some code, you can just import it into the new application.
For future projects, you might want to consider which is best for your needs. Apart from structure, there are some other key differences between a web application and a web site project.
MSDN handily provides the differences here:
http://msdn.microsoft.com/en-us/library/dd547590.aspx
If you find you want the features of the web application, then the link you've posted is fine. You'll need to do some re-organizing of your references and so on and so forth, but the process is fairly straightforward (but not painless).
A "web site" in visual studio is the old, .net 1 style of creating web sites. It basically dynamically compiles the code in a folder when it's hit for the first time. Later .NET introduced a "web application" model where the code is compiled into a DLL and no code files are deployed with the site. "Web sites" are pretty much depcrated and shouldn't be used for any new projects unless you're doing a quick demo site.
The codeplex project you referenced also depends on MVC 3 (which are web applications).
You are probably better off just restarting like the tutorial says - create a new MVC application like it shows in its first screenshot.
If you do not have that option, use Web Platform Installer to add MVC for you - http://www.microsoft.com/web/downloads/platform.aspx
Good luck!
I can't tell exactly what's going on from your screenshots, but if you have a web site that you need to convert to a web application project, you can find the directions here
Although the instructions are specific to VS2005, they are basically the same for 2010 as well.

Microsoft patterns and Practices, Anyone?

I happend to go through the below site from one of the Stack over flow Questions.
http://webclientguidance.codeplex.com/wikipage?title=Getting_Started_Feb_2008
Is this "One of the" way to create our web app from VS?
I can create a Website,Web App,MVC web apps. now one more? man, its getting confusing.
I have interpreted the question as being related to project templates and the process of starting a new project in Visual Studio.
Visual Studio allows anyone to create a project template. It comes loaded with things like "Windows Forms Application" and "Web Application" and you can load other templates that suit your needs, such as the "ASP.NET MVC Website" template, or the template you note above.
The idea of the template is that it lays out all of the boilerplate stuff that you are likely to use in a particular scenario. For example, if you write an application that has a plugin architecture, you might create a project template for a plugin, which has the code all laid out ready to be implemented, so each time you write a plugin, you start writing code straight away - rather than spending time laying out the structure of the plugin.
So don't be confused by new templates. Choose the templates that suit what you need to do and stick to those!
Creating a "Website" in Visual Studio uses ASP.Net WebForms, using a method that means the pages are compiled on-the-fly - there's no DLLs created. This method is not really encouraged, and is no longer the default in Visual Studio 2010.
Creating a "Web App" in Visual Studio also uses ASP.Net WebForms, but compiles the site, so the code-behind and any class files are compiled into a DLL.
MVC is an alternative framework to WebForms that also uses ASP.Net.
As for the Web Client Software Factory, this is a toolkit to help you create a Web App project in a "patterns and practices" way. I've only just looked at the site, but it seems to be using WebForms as opposed to MVC.
So there's essentially a choice between WebForms and MVC in terms of ASP.Net frameworks, but after making that choice, there's several other sub-paths you can go down.

ASP.net: Website or web application project

Is there any difference between website and web application project? What if you are working on a project that is sort of hybrid of site and application? which project should you chose?
I'ld go the newer Web Application project (always, regardless of the size of the project).
There is nothing to lose and everything to gain with using the Web Application Project (you cannot say this about using the "website" only).
The official list of differences are here:
Use Web Application Projects when you
Need to migrate large Visual Studio.NET 2003 applications
Need to
control names of output assemblies
Need stand-alone classes to
reference page and user control
classes
Need to build a Web
application using multiple Web
projects
Need to add pre-build and
post-build steps during compilation
Use Websites if you:
Need to generate one assembly for each page.
Prefer single-page code model to code-behind model.
Prefer dynamic compilation and working on pages without building entire site on each page view (that is, save file and then simply refresh the page in the browser).
Want to open and edit any directory as a Web project without creating a project file
#Mehrdad's link here is essential if you want to know more http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx#wapp_topic5
As for which project to choose, I would go with the Web Application Project, regardless of size. Having all of your code behind compile down into a single DLL is a major benefit for maintenance and security on the hosting end. I know there are precompile options for web site projects, but they seemed like more trouble that it was worth for me.
I know that the IIS filters are in place to prevent users from accessing your .vb or .cs files, but it still makes me a little leery.
But more important to this is the nice fact that if you make a bunch of coding changes, or maybe add some classes and change the processing logic, the only thing you have to merge up is the compiled DLL and nothing else. Similarly, if you do a few UI changes (say change the stylesheet or position of a few controls), you don't have to worry about recompiling the application, you simply bring over the update .aspx page and you're done.
Take a look:
http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx#wapp_topic5
http://forums.asp.net/p/1300026/2538628.aspx
I'm used to create websites when I want to create a new webapplication.
My current project had some problems on compiling, so I switched to a webapplication project. The step isn't very hard. Visual Studio helps you to change all necessary lines.
Refer to the links in the post:
http://www.codersbarn.com/post/2008/06/01/ASPNET-Web-Site-versus-Web-Application-Project.aspx
Anthony :-)

Resources