Simplify.Web is a lightweight and fast server-side .NET web-framework based on MVC and OWIN
This project is a continuator of AcspNet web-framework
Ready issues |
---|
.NET (4.5.1) | Mono (Latest) | |
---|---|---|
master | ||
develop |
- 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
// 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/Simplify.Web/wiki)