Q:

How to share models between different MVC websites?

I have 2 seperate areas for my ASP.NET MVC 3 website - Admin (Intranet website) and Client (Internet website).
The Model (business and data access layer) will be used by both websites. The websites will be hosted on seperate servers. So, the folder will not be shared.
So, I am planning to create the DLL of the Model and put the DLL in the Bin Folder of both website and use it.
I hope this will keep my UI neat and less code as well.
Now, my doubts are:

Do I need to create a Class Library project to create the DLL of the Model or do I need to use and MVC web application project to create the DLL?
Where should I put the web config? Hope I need in both Model and also in UI?

A:

Do I need to create a Class Library project to create the DLL of the Model

Yes, a separate class library shared between the 2 web applications is the best approach.

Do I need to use and MVC web application project to create the DLL (looking for the best approach)? 

No, the ASP.NET MVC could contain only the views. Do not reference and reuse a web application for common logic in other applications.

Where should I put the web config?

Each ASP.NET MVC web application should have its own web.config.

A:

Yes, your abstracted business logic should be in a separate class library project. You can then reference this project from web apps in the same solution or compile it and reference it as a DLL. Your web.config file(s) will still live in your web project(s).
To add settings for your class library in your web project, use configuration sections:
<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <section name="My.Class.Library.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
</configSections>
<applicationSettings>
    <My.Class.Library.Properties.Settings>
        <setting name="SettingName" serializeAs="String">
            <value>SettingValue</value>
        </setting>
    </My.Class.Library.Properties.Settings>
</applicationSettings>

