How to design configurable MVC panels? - c#

I have to make a web application that produces pages that contain panels with different setting configurations for different sites the page is hosted under.
For example, SiteA.com has a search panel with 3 select dropdowns and SiteB.com can have a search panel with 4 select dropdowns.
Can anyone offer any advice on how I could proceed? Or recommend any patterns that might conform to what I'm trying to achieve?

The concept of a panel is more ASP.NET and really shouldn't be used with ASP.NET MVC. You should use partial views to represent each search section that you need to display. So put all you custom code for each search section in a partial view then on your site you just call the partial to include that code:
<%Html.RenderPartial("SearchOne");%>
Code for SearchOne partial view, which looks like this:
<%# Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%Html.DropDownList("DropDownOne");%>
<%Html.DropDownList("DropDownTwo");%>
<%Html.DropDownList("DropDownThree");%>

Related

How to create single page and render many pages in ASP.net

i want to create an ASP.NET website, what i want to do is to create a page lets name it the main page "main.aspx", not MVC or razor pages.
Then inside this page i control and render the other pages using paramter in the url named "method" for example as following :
main.aspx?method=register : so the register page or view rendered in the main page.
main.aspx?method=users : the users page or view rendered in the main page.
My question is, what it the right choice to do this in Visual studio 2017 ?
if web forms is the right one, what is the main page should be "Default.aspx" or another page ? where i should exactly get the "method" value ? where i should put the template or the view of the "register" for example? and what is the expected content to be inside it ?
It sounds like you want a Single Page Application type of site.
My question is, what it the right choice to do this in Visual studio 2017 ?
Sure it is, if you understand what you are building. Try creating a new ASP.NET Core project with the SPA template, and see if that is what you are looking for. If so, I would strongly suggest checking out the [ASP.NET SPA Documentation(https://learn.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/build-a-single-page-application-spa-with-aspnet-web-api-and-angularjs)..
If you use Webforms, the template that can wrap other pages is called a MasterPage.
You don't need to pass the page name through a querystring, though. You can accomplish that with the URL Rewrite module or with Routing, but neither is necessary. The MasterPage will wrap any page that uses it automatically.
Here's an overview:
ASP.NET Master Pages
https://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx

What is the difference between Partial View and Layout?

I had used both the Partial View and also the Layout Concept in my Project i cannot able to differentiate. But what i am feeling is both doing the same work. Can anyone tell the brief idea about the Partial View and Layout and difference with example?
In addition to Josh's answer, my aweeeesomeee paint skills would like to draw you a picture that should explain all..
Admit it... you're in awe...
You see the header and footer... you could even have partial view's there too.
EDIT...
Layout
To give you a different example of why you use each component (layout / view / partial view), imagine that you own a website that has 100 pages in total, and lets say you want to update the design of your website, how are you going to do it?
Updating each page individually would drive me insane, because your replicating your code constantly for every single page, just to update your design.
This is what the Layout view helps you solve, you use the Layout view to create a template for all of your pages.
View
Using our existing scenario of 100 page website, each page is going to have content that is unique, the View allows us to display this content whilst using our template from the Layout.
Partial View
Now lets imagine that we allow our visitors to comment on our pages, each comment must look consistent, and behave exactly the same as all the other comments throughout our website... To achieve this, you would use a Partial View which would act as a template for the comments that you receive on your website.
The benefits of doing this is that you don't have to repeat your code everywhere, you only have to create one Partial View to render any comment.
Layouts allow you to generate a consistent look across your entire site. Think of them like Master pages of ASP.net.
What are Layouts?
You typically want to maintain a consistent look and feel across all
of the pages within your web-site/application. ASP.NET 2.0 introduced
the concept of “master pages” which helps enable this when using .aspx
based pages or templates. Razor also supports this concept with a
feature called “layouts” – which allow you to define a common site
template, and then inherit its look and feel across all the
views/pages on your site. - http://weblogs.asp.net/scottgu/asp-net-mvc-3-layouts
Partial views allow you to construct a view and render it inside of a parent view. For instance, say have a site that allows you to comment on an article. The section in which displays and allows a user to add a comment is a piece of reusable code that is inserted into all of the pages you wish the functionality to exist. What makes this important is that you can then modify that single partial view file to update every view that renders that partial instead of tracking down each page that implements that code individually.
Here is a Youtube Vid that helped me understand partial views rather well. https://www.youtube.com/watch?v=SABg7RyjX-4
edit: Additionally, the guy who created the linked vid has an entire library of playlists that may help a new MVC coders. He walks through a great deal of the MVC features with decent examples. https://www.youtube.com/user/kudvenkat
Non-technical explanation:
Layout is a foundation of the house, View is a single room in that house and PartialViews are windows in that room or sockets with electricity in walls.
To make it simple Here is my answer:
1)
A layout is something that we can include once in a single page
and we can use the same layout to any number of pages.
2)
A partial view is something that we can include the same content
any number of times in a single page(where it is required) and can
be used in any number of pages.

Implementing an html/css framework with a master page in visual studio

I'm working on a website for a school project and I designed it in photoshop with 9 columns.
To make life easier I want to use the 960 grid system (Custom for 9 columns) in order to build the design in html/css.
Part of the projects requirement is that I need to use a master page and web forms in c# however I'm not sure how to implement the 960 framework within that.
does anyone have any experience with this?
It sounds like you're being forced to use ASP.Net Web forms. I'd typically recommend you use ASP.Net MVC instead, and it does support Master pages, but really everything is a view, and I expect you would get push-back from the professor. So, to keep with the standard ASP.Net Web forms approach, you should create a new ASP.Net WebSite, and check off that you want a master page. Then Visual Studio will create the Master page for you, and any new aspx pages you create you can click a box to have them inherit from the master page.
If you look at the .Master page, you'll see the same HTML you would see on any site, including the , and tags. You should just include the .css file that contains your 960 framework file, just like you would on any Web page. Then the rest f the page will use the 960 grid, and you can put the necessary col# classes inside the class tag (or CssClass for ASP.Net controls) to get the display to work correctly.

What is equivalent to a php page setup in asp.net

I program php, but I am trying to get into c# asp.net. In php I can make forms, custom html, etc into a seperate php file and just include it on the page that I desire. I understand asp.net has a master page which allows you to set the template for the whole website, but what If I want just a row of buttons to be on SOME pages, and not all? something separate to the master page that can be included on any page i desire? Also when its controllers is that when I use .ascx?
Look at User Controls. You can program a control that consists of a row of buttons and then put it on whichever pages you like.
There are two different approaches to ASP.NET nowadays.
ASP.NET WebForms:
Each page (.aspx) can have a Master Page (.master). Each master page can further have its own master page. Master pages are optional altogether, but if present, at least one in the heirarchy will typically have the opening and closing html, head, body, and form tags.
Each page (and master pages too) can reuse html/logic within itself through Web User Controls (.ascx), for instance if you wanted to create a reusable comment box "control".
ASP.NET MVC:
Each View can have a master layout.
Each View or master layout can trigger the rendering of child/partial Views, for further reuse of html/logic.
Nowadays, if coming from PHP, I'd learn ASP.NET MVC instead of WebForms if I were you.
As DuckMasetro. Said, we can have master Page Concept. It Is easiest way to do.. You can Design master pages in Designer mode with liitle efforts. then Just Use MasterPageFile="url" this property in your Webforms Page Directive at the top of your aspx. page
Tutorials for Begginers
Documentation for Master Page in ASP.net

.Net include page - like php require

Is there a c# command to include another web page - the equivelant of the php require?
I know how to do server side includes but was looking for something code based.
Thanks
Thanks for the answers all. I think I might need to explain further. I have several sub-pages that I will be loading during the use of the site using an xmlhttp request. Initially however, I need to load the starting sub-page before the user has interacted with the site. I could do this with js, but that would require more overhead in server calls from the client for the initial load. I already use master pages, but this is a little different. Since this is done serverside initally but must remain able to be refreshed clientside, I don't think I can make these pages into controls can I? I am pretty new to .Net so I may be making my life harder than I need to.
I think what you may be looking for are MasterPages and UserControls. A MasterPage allows you to define a basic template that is "filled in" by the implementing pages by having the implementing page add it's own content to the ContentPlaceHolders defined on the MasterPage. A UserControl is a re-usable piece of markup and associated code that you can reference from your mark up or add dynamically to the page being rendered in codebehind.
The way ASP.NET is structured, you shouldn't really need to do this. Code is compiled, so all of your classes and functions should be accessible simply by referencing the relevant assembly or namespace, without having to include individual code files.
You might be looking for user controls, which allow you to create fragments of markup with their corresponding code behind, and then reference these in your page.
With ASP.NET MVC it looks like this:
<% Html.RenderPartial("LogOnUserControl"); %>
This way you can put another UserControl on your page.
you can use include in asp.net like php include from below mentioned code
<!--#include file="include/leftmenuscript.inc"-->
You can also use a master page, as someone stated below, which flushes out your basic layout and lets you define content place holders, which other pages can implement and fill in the content. Master pages are a popular approach for defining page elements that are consistent across all pages, like your nav there (also things like headers, footers, common scripts, CSS, etc.).

Categories

Resources