Hi all,
I have been working on an ASP.NET application that is a kind of wizard ( a
list of sequential pages ). We built that application for the CLIENT-A and it
worked fine. After six months CLIENT-B came along and and requested the same
application but with little bit different requirements (both in terms of the
front-end and back-end processing), so we had to create a new application for
that client. Now came CLIENT-C !!!!!!
I am not into the favor of creating one more application for this client and
have been thinking about creating one generic application that will fit most
of our clients needs; I mean the application has to change the behavior based
on the client for which it has been called.
For example, CLIENT-A requires all pages to be shown in a sequence (Page1,
Page2, Page3, Last Page). CLIENT-B does not want to show Page1, rather they
want to show Page2, and the Last Page. CLIENT-C wants to show all of the
pages in the same sequence but has less data entry fields on some of the
forms!!!
Now is there a way I can implement/architect/design a generic/semi-generic
application that would change its behavior based on the client for which it
has been invoked for? any design pattern that would do the trick for this
kind of application? any insights?
Thanks in advance.
Stewart 2 1202
If your clients login, you can use the client id associated with their
userids to read a database table that defines the names of the pages
that you will redirect to. It's not very difficult to do actually. I
use this technique all the time with Intranet applications where the
users login in, and based on their roles, I display menus with lists of
pages that they can access. All pages verify that the user's role is
valid for that page, and if not bounce the user back to the login page.
So, in its simplest form, you need a database table for the users and
passwords, a table that links userids to client companies, and a table
that links client companies with pages. Then use a session variable or
a viewstate variable to pass the client id from page to page after the
client logs in.
Thanks for sharing your experience.
I do understand that and I was thinking along that direction but my
requirements are just not that simple! I know I can walk user through a bunch
of pages driven from a database table but there is more to it. Such as:
(1) Pages may have different data entry fields for each client
(2) Pages may have different data validation rules for fields for each
client (first name should be at most 50 characters for CLIENT-A but should be
40 characters for CLIENT-B, etc).
(3) Pages may have to do some "pre" and "post" processing that might be
specific for each client (For example, CLIENT-A wants Page1 to come up with
empty fields, whereas CLIENT-B wants Page1 to talk to client's web service to
fetch data and fill the fields, etc)
(4) and ofcourse user interface images and asthetic changes for each client!
that is the kind of app I am talking about here.
Any help guys?
thanks,
Stewart
"rm*******@yaho o.com" wrote: If your clients login, you can use the client id associated with their userids to read a database table that defines the names of the pages that you will redirect to. It's not very difficult to do actually. I use this technique all the time with Intranet applications where the users login in, and based on their roles, I display menus with lists of pages that they can access. All pages verify that the user's role is valid for that page, and if not bounce the user back to the login page.
So, in its simplest form, you need a database table for the users and passwords, a table that links userids to client companies, and a table that links client companies with pages. Then use a session variable or a viewstate variable to pass the client id from page to page after the client logs in.
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Stewart Rogers |
last post by:
Hi all,
I have been working on an ASP.NET application that is a kind of wizard ( a
list of sequential pages ). We built that application for the CLIENT-A and it
worked fine. After six months CLIENT-B came along and and requested the same
application but with little bit different requirements (both in terms of the
front-end and back-end processing), so we had to create a new application for
that client. Now came CLIENT-C !!!!!!
I am...
|
by: zlst |
last post by:
Many technological innovations rely upon User Interface Design to elevate
their technical complexity to a usable product. Technology alone may not win
user acceptance and subsequent marketability. The User Experience, or how
the user experiences the end product, is the key to acceptance. And that is
where User Interface Design enters the design process. While product
engineers focus on the technology, usability specialists focus on the user...
|
by: Andreas Huber |
last post by:
What follows is a discussion of my experience with .NET generics & the
..NET framework (as implemented in the Visual Studio 2005 Beta 1),
which leads to questions as to why certain things are the way they
are.
***** Summary & Questions *****
In a nutshell, the current .NET generics & .NET framework make it
sometimes difficult or even impossible to write truly generic code.
For example, it seems to be impossible to write a truly generic
|
by: Richard Brown |
last post by:
Ok, I've been looking through the .NET SDK docs and stuff.
I'm wondering if you can provide a control extender that does generic
validation or functionality just by dropping it on the form. For instance,
using the IExtenderProvider interface, you can specify properties, but there
is nothing documented about linking into a control's events.
For instance, in my application, there are specific formatting,
functionality and validation for...
|
by: HC |
last post by:
I've stripped down my code to barebones to demonstrate (below).
I have interfaces and classes which implement them. I force my generic
collection to accept only the interface type. If I create an instance
of the generic class using the class implemention of the interface I
find it can't be converted to the interface version, and vice versa.
This a pain with my current design.
Can someone please advise on what best practice might be in...
| |
by: Harold Howe |
last post by:
Howdy all,
I am getting a compiler error regarding a consrained conversion. It
complains that it can't make the type conversion, even though the
generic type argument inherits from the target of the conversion. I have
trimmed my source down as much as possible.
The classes implement something that behaves sort of like the Mediator
design pattern, but where the colleagues are abstract, and can be added
or removed on the fly. I guess...
|
by: kasper.rung |
last post by:
I have a problem formulating a test to see if an object is implementing
a generic interface.
I have the following:
public interface IGeneric<T>
{
void Foo();
}
|
by: mps |
last post by:
I want to define a class that has a generic parameter that is itself a
generic class. For example, if I have a generic IQueue<Tinterface, and
class A wants to make use of a generic class that implements IQueue<Tfor
all types T (so it can make use of queues of various object types
internally). As useful as this is, it doesn't seem possible. The natural (but
illegal) notation would be something like
class A<QueueClasswhere QueueClass :...
|
by: phancey |
last post by:
I'm quite new to generics. I have 2 generic classes:
MyClass<Tand MyOtherClass<T>.
MyClass<Thas 2 public Add methods
Add(MyOtherClass<T>);
Add(MyOtherClass<Wrapper<T>>); (Wrapper<Tis another class that
contains an object of type T)
I have a third generic class: MyHandler<Twhich contains 2 Add
methods and a generic method:
Add(T obj)
|
by: =?Utf-8?B?Sm9obk1TeXJhc29mdA==?= |
last post by:
I have a generic class defined. My "server" code wants to call methods on
the generic class after I've assigned the type to it. I was trying to do
this via a SELECT CASE statement but I can't seem to determine how to declare
the object at the module level (so I can use it in several methods) but
assign the type when I create the instance. Probably this isn't the
appropriate way to use Generics so if there are suggestions, I'm open to...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
| |
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |