This project is renamed to "Simplify.Web" and moved to https://github.com/i4004/Simplify.Web
AcspNet v5.3 will be Simplify.Web v1.0
ACSP.NET (Advanced Controls Site Platform .NET) is a lightweight and fast server-side .NET web-framework based on MVC and OWIN
Latest version | |
---|---|
Dependencies |
Ready issues |
---|
Platform | Status of last build |
---|---|
.NET (4.5) | |
Mono (3.8.0) |
- Based on MVC and MVVM patterns
- Comes as OWIN middleware
- Uses switchable IOC container for itself and controllers, views constructor injection (Simplify.DI)
- Mono-friendly
- Support async controllers
- Uses fast templates engine (Simplify.Templates)
- Supports controllers which can be run on any page
- Localization-friendly (supports templates, string table and data files localization by default)
- Mocking-friendly
To get started you can install visual studio AcspNet project templates and read this article.
// Controller will be executed only on HTTP GET request like http://mysite.com/about
[Get("about")]
public class AboutController : Controller
{
public override ControllerResponse Invoke()
{
// About.tpl content will be inserted into {MainContent} in Master.tpl
return new StaticTpl("Static/About", StringTable.PageTitleAbout);
}
}
Runs on any request and adds login panel to a pages
// Controller will be executed on any request and will be launched before other controllers (because they have Priority = 0 by default)
[Priority(-1)]
public class LoginPanelController : AsyncController
{
public override async Task<ControllerResponse> Invoke()
{
return Context.Context.Authentication.User == null
// Data from GuestPanel.tpl will be inserted into {LoginPanel} in Master.tpl
? new InlineTpl("LoginPanel", await TemplateFactory.LoadAsync("Shared/LoginPanel/GuestPanel"))
// Data from LoggedUserPanelView will be inserted into {LoginPanel} in Master.tpl
: new InlineTpl("LoginPanel", await GetView<LoggedUserPanelView>().Get(Context.Context.Authentication.User.Identity.Name));
}
}
public class LoggedUserPanelView : View
{
public async Task<ITemplate> Get(string userName)
{
// Loading template from LoggedUserPanel.tpl asynchronously
var tpl = await TemplateFactory.LoadAsync("Shared/LoginPanel/LoggedUserPanel");
// Setting userName into {UserName} variable in LoggedUserPanel.tpl
tpl.Add("UserName", userName);
return tpl;
}
}
<!DOCTYPE html>
<html>
<head>
<title>{Title}</title>
</head>
<body>
{MainContent}
</body>
</html>
```
##### About.tpl
````html
<div class="container">
Welcome to about page!
</div>
```
### [Detailed documentation](https://github.com/i4004/AcspNet/wiki)