2016-06-07 6 views
2

У меня возникла проблема создания «sub» -template в asp.net core. Идея состоит в том, чтобы определить полный блок html-bootstrap в файле шаблона и вызвать его в другом файле cshtml parent/master.Шаблоны в ASP.Net Core

ViewModel Лицо (заполняется в контроллере)

namespace RazorTemplating.Models.HomeViewModels 
{ 
    public class Person 
    { 
     [Required] 
     [MinLength(2)] 
     public string Firstname { get; set; } 

     [Required] 
     [MinLength(2)] 
     public string Lastname { get; set; } 

     [MaxLength(3)] 
     public int Age { get; set; } 

     public Group MainGroup { get; set; } 
    } 
} 

Мастер вид называется контроллером (Index.cshtml)

Редактировать: ввода-шаблон -tags ссылки на пользовательские tag helper.

@model RazorTemplating.Models.HomeViewModels.Person 

<div class="row"> 
    <input-template for="Firstname" /> 
</div> 
<div class="row"> 
    <input-template for="Lastname" /> 
</div> 
<div class="row"> 
    <input-template for="Age" /> 
</div> 
<div class="row"> 
    <input-template for="MainGroup" /> 
</div> 

Inputbox Bootstrap файл шаблона (InputBootstrapTemplate.cshtml)

@model dynamic 

<div class="form-group"> 
    <label asp-for="@Model" class="col-md-2 control-label"></label> 
    <div class="col-md-10"> 
     <input asp-for="@Model" class="form-control" /> 
     <span asp-validation-for="@Model" class="text-danger"></span> 
    </div> 
</div> 

Как я могу заполнить динамическую модель для файла шаблона, от ввода-шаблона -tag помощник?

Edit: Что-то меняется заранее для шаблонов в ASP.NET Ядре https://github.com/aspnet/Razor/issues/788

ответ

2

Как я понимаю, вы хотите сделать что-то вроде пользовательских элементов управления. Например, визуализируйте управление с помощью некоторого wrapting html, label, input на одну строку. Правильно? В этом случае tag helpers подходит вам очень хорошо.

Также вы можете взглянуть на новую функцию - view components. Это похоже на маленькое (одно действие) контроллер + пара взглядов. Хорошо делать блоки, такие как новости, последние добавленные комментарии и т. Д.

Не стесняйтесь спрашивать о новых деталях.

+0

Я знаю, что тег * * - это специальный помощник тега. Проблема в следующем: как я могу передать ViewModel и свойство динамической модели в InputBoostrapTemplate.cshtml? –

+0

Не знаю :(Я использую теги-помощники, генерирующие html только из кода: https://github.com/Platformus/Platformus/tree/master/src/Platformus.Barebone.Backend/Areas/Backend/Code/TagHelpers –