- PVSM.RU - https://www.pvsm.ru -
В предыдущей статье Создаем первое приложение на NancyFX. Часть четвертая. Продолжаем работу с модулями [1] мы продолжали изучение модулей. В данной статье мы изучим идущий с Nancy из коробки графический движок Super Simple View Engine.
Итак, давайте создадим новый модуль:
using Nancy;
namespace NancyFxApplication
{
public class ViewModule : NancyModule
{
public ViewModule() : base("/views")
{
Get["/"] = param => View["View.html"];
}
}
}
И добавим в корень нашего проекта файл View.html, который будет иметь следующий вид
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Super Simple View Engine Rule!</title>
</head>
<body>
<h1>Hello! I'm super Simple View Engine!</h1>
</body>
</html>
Запустим приложение и получим следующий результат:

Nancy поддерживает следующие соглашения по размещению и наименованию файлов для представлений:
Можно указывать название файла без расширения, Nancy просто выберет первый попавшийся файл представления с именем переданным во View.
Теперь когда мы разобрались с размещением файлов представлений давайте более детально рассмотрим Super Simple View Engine.
Super Simple View Engine использует синтаксис аналогичный синтаксису Razor. Вы можете найти проект на GitHub перейдя по ссылке Super Simple View Engine [2]. SSVE не поддерживает вложенные коллекции. При отображении сложных типов данных гораздо эффективнее использовать Razor.
Итак, теперь используем фэйковый репозиторий из прошлой статьи для получения данных. Код репозитория выглядит следующим образом:
using System.Collections.Generic;
namespace NancyFxApplication
{
public static class DishesRepository
{
public static List<Dish> Dishes = new List<Dish>
{
new Dish { Id=1, Name = "Porridge", IsSpicy = false, Ingridientses = new List<Ingridients>{new Ingridients{Id = 1, Name = "Porridge"}}},
new Dish {Id = 2, Name = "Chili", IsSpicy = true},
new Dish {Id = 3, Name = "Icecream", IsSpicy = false},
new Dish {Id = 3, Name = "Taco", IsSpicy = false},
new Dish {Id = 3, Name = "Burito", IsSpicy = true}
};
public static List<Dish> GetAllDishes()
{
return Dishes;
}
public static void AddDish(Dish dish)
{
Dishes.Add(dish);
}
}
}
Модифицируем модуль ViewModule:
using System.Collections.Generic;
using Nancy;
namespace NancyFxApplication
{
public class ViewModule : NancyModule
{
public ViewModule() : base("views")
{
Get["/"] = param =>
{
List<Dish> dishes = DishesRepository.GetAllDishes();
return View['View.html', dishes];
};
}
}
}
И в свою очередь модифицируем представление
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Super Simple View Engine Rule!</title>
</head>
<body>
<h1>List of dishes:</h1>
<ul>
@Each
<li>@Current.Name</li>
@EndEach
</ul>
</body>
</html>
Запустим наше приложение и получив следующий результат.

Движок представлений предоставляет возможности использования операторов @If, однако, хочется заметить, что вложенные операторы SSVE не поддерживаются. Также есть возможность добавления Partial View.
В заключении еще раз хочется добавить, что использование SSVE только в случаях когда надо отобразить простые данные, для отображения сложных типов рекомендуется использовать другие движки представлений.
В следующей завершающей цикл статье речь пойдет о тестировании приложений под NancyFX. Жду отзывов и комментариев.
Автор: Moozund
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/net/47922
Ссылки в тексте:
[1] Создаем первое приложение на NancyFX. Часть четвертая. Продолжаем работу с модулями: http://habrahabr.ru/post/200632/
[2] Super Simple View Engine: https://github.com/grumpydev/SuperSimpleViewEngine
[3] Источник: http://habrahabr.ru/post/201490/
Нажмите здесь для печати.