Is it possible to customize the asp .net mvc 3 generated Views? - visual-studio

I've been using asp.net mv3 via vs 2010 for quite a while now, also the default views and actions generated when creating a controller are very helpful. However lately, i found it redundant to keep on adding the same stuff in the generate view, for example, i have to place "btn" class names on links and button, since im using a 3rd party css library. So, i was wondering if it was possible to customize the generated views so that i wouldn't have to add them anymore after generation of the view?
image --> http://i.stack.imgur.com/J8Aiz.png

Yes it's possible to customize the built in TT templates which used fot the scaffolding.
Here is a good how to: Modifying the default code generation/scaffolding templates in ASP.NET MVC
If you are more into scaffolding the MVC Scaffolding project could be also interesting for you.

Related

Which Visual studio template to use for web-app. (Standard / MVC)

Having to select a template when creating a new project in Visual studio, which of the 2 should pick?("asp.net core web app" ...or... "asp.net core web app (model-view-controller)")
In order to try and discover the answer for myself, I'd have to create 2 different projects and compare the features and capabilities. If I knew what to look for, it might been easier.
if the on template is MVC, then what is the non-MVC actually then?
If I go for the one project, would I be able to convert to the other later then? (and vise versa)
The simplest explaination is: In asp.net core you work with web pages where each of the webpages (Razor pages) has a code behind file. In asp.net core web app (Model View Controller) your code behind is kind of centralised, in a controller file, and this code redirects to different view files. There is more to this than that. Furter explaination can be found on from page 12 of in this document: https://dotnet.microsoft.com/en-us/download/e-book/porting-aspnet-apps/pdf

Can I add a partial view to an existing MVC5 project?

I need to implement a Telerik control into an existing page of a MVC5 project.
The problem is that I don't own the source code of the project (it's an off the shelf framework) so when I open it in VS there is not the model and controller files (only the shared view) so I cannot modify it accordingly to my needs. The shared view is a cshtml file with pure HTML stuffed with a bunch of HTML helpers and a couple Razor blocks.
Since I am pretty new in MVC I would like to know if it's possible that I create a custom "partial view" from scratch inside this project and invoke it from the shared view.
I am asking the feasibility of it before I waste a lot of time chasing my own tail on something that cannot be done... :/

Creating a MVC 3 Site theme design

I have a MVC 3 web application for which I would like to implement a theme/templating framework (similar to Wordpress or Joomla where you can enable or disable different themes for a site) and would like to find out what is the best way to accomplish this.
My design constraints are this. I buy HTML templates from places like Themeforest or Template Monster and want to make a number of these templates available for use in my web app. The templates you typically buy online all have very different CSS layout frameworks, so it's not possible to just drop a new CSS in your /Content/Themes/ folder and then your views work with this because you also have to make changes to the HTML in the Views. So for every new theme in /Content/Themes I also need a new set of /Views/ folders where the HTML is updated to use the proper CSS classes for that theme.
I know in an ideal world I should just have all the CSS compatible with my html views (ie theme switching is purely based on loading a new CSS), but in this case that is just not possible.
So I'm wondering if there is way to tell MVC where the current default Views folder is? A possible project structure I'm thinking of is something like this:
/Themes/Theme1/Views/(all cshtml view pages for this theme goes here)
/Themes/Theme2/Views/(etc)
I know that I can force the views like this
return View("~/Themes/Theme1/Views/Controller/Index.cshtml")
which can be extended to dynamically determine the theme folder with something like this
return View(currentThemeFolder + "/Views/Controller/Index.cshtml")
but I am wondering if there is a better way to do this? Is there someway perhaps in the global.asax to set the default "Views" folder so that the above is not necessary? There must be an entry point to the views because how do you then specify which _viewstart.cshtml file is called? And if I do go for the above design of forcing/"semi-hard-coding" the views what are the down sides to it?
I also want to say that I have not looked much at Areas in MVC 3 and I don't think that would work here, because my understanding is that it would affect your routing, and would also duplicate your model and controllers folders which I don't want. I have on central Model and Controllers folders, but just need multiple Views folders.
You can extend VirtualPathProviderViewEngine to create your own themeable view engine. Here is how: http://www.singingeels.com/Articles/Creating_a_Custom_View_Engine_in_ASPNET_MVC.aspx

How to create custom editor/display templates in ASP.NET MVC 3?

I would like to make custom editor templates for different data types in ASP.NET MVC (to use with Html.EditorFor()), including rewriting the existing templates. The ultimate goal is to create a mini-framework where each editor supports javascript notifications about being changed, and I can show a message to the user that there are unsaved changes in the page. (Maybe there's something existing already?)
I can find many questions pertaining to problems with such templates, but nowhere can I find a tutorial or manual on creating them. Where do they go? Is there any special syntax? How does a template get selected? What information is available in the template and how do I access it? Etc.
So - where can I find out all about these templates?
Check and download ASP.NET MVC 3 Futures on http://aspnet.codeplex.com/releases/view/58781 and see how the default source code looks. Note: this works for MVC 4 as well.

Why does the default ASP.NET MVC 3 project not use controllers?

Upon creating a new ASP.NET MVC 3 Razor site, there are 9 Account\*.cshtml files which seem to be views with the controller logic inserted at the top of the view in an anonymous code block. There is no account controller class.
Why is this? As I understood, the benefit of MVC was the separation of concerns of code & presentation. Does this imply that I should remove all of the existing files & re-implement the Authentication & Authorisation layers?
It seems odd that MS would ship the 'worst possible example' with their flagship web framework.
Thanks,
Jarrod
Edit: I was using the wrong entry point within visual studio to create the application (see my comment below). Thanks!
Hmm, something is not quite right on your end.
I just created a new ASP.NET MVC3 Web Application.
I do have a 'Controllers' folder with a proper AccountController as part of the project.
Are you using Visual Studio?
This is incorrect. Here's the default folder structure in the MVC3 Razor starter app:
As you can see, there are two controllers in the ~/Controllers folder.
Just to be clear, I started a new VS2010 instance, created a new MVC3 project, selected "Internet Application" and Razor as the view engine.

Resources