MVC :: Move Controllers/Models Into A New Project/Assembly?
Oct 6, 2010
I have to admit first, that for the last few years, I've been mostly an MVP guy versus MVC. However, how I used to implement MVP is very similar to how MVC 2 is now implemented. I only have one issue with it...When I used to create MVP apps, I could put all my logic (presenters, models) into separate assemblies/projects in the solution and my views into the main web app. This allows me to change the UI (i.e. the web based UI) to something else like a smart client or Silverlight or whatever and still have everything just work. With MVC 2, everything is all in the same project: controllers, views, models. Areas looked like a good start, but ultimately, not what I was looking for.So, here's my question... How do I move the controllers and models out of the web project and into their own projects and still have everything work? A good, simple example would be the default MVC 2 web application template. When you open a new (non-empty) MVC web application, it creates a basic site for you. From there, how could I move the controllers and models in separate projects and still have everything just work? I can't seem to find anything on this anywhere else which has brought me here
I am reorganizing my MVC app into a Models project and a Controllers project, and then the main application as a project. So, everything is working good so far except. Whenever I go to "Rebuild" my controllers project, I get this error: Controllers.AccountController.Initialize(System.Web.Routing.RequestContext)': no suitable method found to override.
Keep in mind that AccountController.cs was automatically placed in my application by Visual Studio, and this was all working fine when the Controllers were within my main project. I think it might have to do with the ASPNETDB.MDF file that this AccountController.cs file references to authenticate users as they log in, since this database stayed within my main project and didn't follow the Controllers project.
Here's the Initialize method on my AccountController: protected override void Initialize(RequestContext requestContext) { if (FormsService == null) { FormsService = new FormsAuthenticationService(); } if (MembershipService == null) { MembershipService = new AccountMembershipService(); } base.Initialize(requestContext); }
We have a solution that contains 2 web applications and a class library called core.dll that has our shared code for use on both sites. What I was wondering is: is there a way when integrating MVC into our current application to put things that may be common across both sites like controller classes into the shared class library?
I'm starting a new ASP.NET MVC project, and I decided to put my controllers in a different assembly. Evertyhing works fine, but I have hit a problem: I created a new area in my MVC Project, called Administration. I have an AdminController Class in my seperate assembly which is supposed to return views from my Admin area, but everytime it tries to return a view, it looks for it in the wrong place (~/Admin/SomeView.cshtml Instead of ~/Administration/Admin/SomeView.cshtml) How can I tell the controller to look for views in the wanted area?
I would like to have a project that contains all of my Controller logic. I'm not concerned with using Areas, as these are still maintained within the same project. Consider this scenario: I have multiple sites/apps that require the exact same interaction in regards to a particular area, say CRUD ops on a user account. I do not want to create all of the controller logic for one site/app, recreate it again for the next, and make sure that I keep all maintenance to each in sync. I would prefer to keep the controllers in a separate project and reference them from the appropriate site.
I know someone will say that the controller logic is a lot of times specific to the application (as I've read elsewhere), but let's just say that it is guaranteed to be the same. I want to focus on the "how" and not the "why". So far, I've created a class library project with the appropriate references for accessing System.Web.Mvc. How do I proceed with the routing configuration for this? Is this idea even possible? I read a few older articles that were written when Areas were first being introduced that said to create separate projects for them. Is this idea similar to that?
i was wondering if visual studio 2010 can be used as an assembly editor too????if yes where do i have to go to create a first blank page for an assembly project?
Before using any class in your website project/page we have to add it's assembly reference to our project. Right?
Now, when I am using SmtpClient class from System.Net assembly after adding the System.Net.Mail namespace in namespace node of application's web.config file but without adding assembly reference to the project, it still accepting and running the code. Why?
I enquired the machine's web.config file located at C:WINDOWSMicrosoft.NETFrameworkv2.0.50727CONFIG but didnt find assembly reference for System.Net there also.
So bit confused how it is working and where the assembly reference has been added and how?
I was not able to do unit testing for our existing web site project. I converted the web site project to a web application project. I did some unit testing and changes on the converted web application project. However, my co-worker was doing UI testing on the web site project. We need put UI testing and unit testing to the web application project. Is it possible to move the UI testing code that my co-worker did to the web application project I am working? If so, how do you do it?
I have a MVC3 solution named "SampleProject". I have 4 projects in the solution.
The project names of the solution are
SampleProject.Data (holds entity classes, DAL classes, and filter classes) SampleProject.Service (something like BLL in standard ERP) SampleProject.Tests (test project) SampleProject.Web (holds controllers and views)
I am calling the Service classes from my controllers. The service classes are calling Data classes and performing the database operations.
I have done create, list and details part. Now I stucked in Edit part. None of the examples (NerdDinner,MVCMusicStore etc) using my architecture. In the provided examples, they are just using built in UpdateModel method which I don't want to use. I want to manually get the model object from my view and send it to my Data layer for update.
We have a legacy ASP.NET webforms application that we're engaged in stabilising and removing technical debt from. Is it possible to take a hybrid approach - ie, can ASP.NET MVC coexist with webforms within the same web-project? Are there any gotchas for that? If it is possible, I assume one just has to initialise the routes table, register the ASP.NET MVC handlers,
I have used .net framework 4.0 to design my web project I want to improve some features on my web site and I decided to use MVC in my project.
I research about mvc I found out System.Web.Routing in .net framework 3.5 is wrapped by System.Web in .net framework 4.0.
In the other side in my host environment I have IIS 7.0 with all necessarily handlers mapped to .aspx and some other extension like .cshtml and support them.
So I think I have all thing for mvc migration. my question is :
Is it possible to move mvc by configure web.config and make some structure for content, view and controller classes but don't change any asp.net pages and configuration like appcode and appdata which I had before in my asp.net application.
Note, I don't want to change or update my old application to mvc I want to add some mvc controllers class and view to my existing asp.net project to use mvc functionality.
I have moved my entire project to my test server, everything went as planned with the exception of a couple of items. The main one that I'm having troubles with deals with subfolders of the website. On my local computer I created a my project then I created a sub folder, Secure, so that I can work with the security on the sub folder via ASP.NET configuration. I wanted only certain users to be able to access the folder, which works on my local computer, but when I try to navigate to it on my test server, I get a 404 error. I create two Roles on my local computer, but don't know if I'm able to make those roles on my test server. Is there a way to make those roles so that the security that I have on the sub folder will allow them to be displayed. Not certain why I get a 404 error.
Before using any class in your website project/page we have to add it's assembly reference to our project. Right?
Now, when I am using SmtpClient class from System.Net assembly after adding the System.Net.Mail namespace in namespace node of application's web.config file but without adding assembly reference to the project it still accepting and running the code. Why?
I enquired the machine's web.config file located at C:WINDOWSMicrosoft.NETFrameworkv2.0.50727CONFIG but didnt find any assembly reference for System.Net.
how it is working and where the assembly reference has been added and how?
why the assembly information would be missing for a project in VS 2010? There is an 'AssemblyInfo.vb' filed located in the 'My Project' folder with values provided for the title, product, etc and GUID. However if I open the 'Assembly Information...' dialog in the 'Application' tab of the properties for the project all the fields are blank.
I'm having trouble moving a website from one server to another. It seems to be a problem loading multiple versions of System.Web.Extensions. The code uses version 3.5 in most places but a third party control appears to be needing version 1.0.6. I didn't think this was possible but it appears to be working in it's current situation.
Is there a way I can use the GAC version of System.Web.Extensions for the site but import a dll of version 1.0.6 just for these controls?
On my development machine I have VS 2005. I had installed Crystal Reports 9 and then later I installed Crystal Reports XI R2 on it as well. I needed both on my dev machine to support 2 different vendor applications. I have a .NET 2.0 web application that uses crystal reports objects. Now my assemblies in webconfig file contain references to both versions of CR installed on my dev machine which is giving me 'ambigous reference' errors on compile. I opened up project properties and deleted the new references (I want to stay with using the CR 9 dlls in the GAC). This fixes up my webconfig nicely.
However VS 2005 automatically re-updates and adds all the CR XI R2 refernces I just deleted a moment ago. Is there a way to sto VS 2005 from routinely updating my references, a radio button or a trick to letting me have complete control over my references, at long enough for me to debug , build the site and deploy to my production server which does not have CR XI R2 installed on it?
I'm aware of the following two different types of web projects in Visual Studio 2008:Website projectWeb application projectA web application project can reference a signed assembly as long as the web application's assembly is also signed with the same key. However, this doesn't work with the website project because there is no place to sign an assembly. I think this is because the assembly is compiled dynamically on the server?
Anyway, is it possible to get the website project working with this signed assembly? Or will I have to convert this website project into a web application project?Edit:The following situation has required me to ask for clarification in this matter:I have a class library that is being referenced by several other projects in my solution in Visual Studio. One of the projects is a windows application that will be deployed to specific external users. In order to make sure that the application is using the correct assembly and to also prevent others from using the assembly (I am aware of the limitations with respect to its effectiveness), all assemblies have been signed and all the classes in the library are declared as Friend (internal).
The website project doesn't seem to have a way for me to sign its assembly and I get the following message when attempting to use anything from the library: "CLASS is not assessable in this context because it is 'Friend'", which is to be expected.The following attributes are inside the AssemblyInfo.vb file in my class library project:
My Conclusion:Looks like the cleanest way to do this would be to convert the website into a web application but this would require a bit of time to do since our site is pretty fleshed out already and as pointed out in other discussions, can be quite a pain to do. Going forward, I think creating a web application in the first place may have been a better idea and much more flexible for future development.
In a Web Application project in VS08, how do you create an assembly? E.g. you derive a class based on HtmlGenericControl to form your own div, override the ClientId and UniqueId properties, so as not to get screwed up id's on the client-side, and then you want to use/reference this control in an aspx page.
refer to David Lively's answer (c# control names) regarding the same thing. I have tried his solution but I keep getting "could not load assembly file".
I have recently discovered that I am affected by this bug http://www.mail-archive.com/mono-bugs@lists.ximian.com/msg71515.html
Well,at http://www.mail-archive.com/mono-bugs@lists.ximian.com/msg71529.html they say the work around is to create a global policy assembly and redirect the assemblies that way since it is not read from the web.config.
How do you actually do what they describe there? There is a huge documentation gap in that area with Mono.Also,I can't just recompile the assembly to use the new Mono assembly versions because the assembly is closed source.(but it does work with Mono.)
I have RDLC report using in my application when I was working on it suddenly I got one error..."Project file must include the .NET Framework assembly 'WindowsBase, PresentationCore, PresentationFramework' in the reference list."Even if I have not used any of the WCF related properties. However, to Resolve this issue I have exclude rdlc from my project and then solution works file.