xamarin 中的剃刀模板

问题描述

我想使用 razor 模板我在 windows 上使用 vs19 没有创建新的选项

RazorTemplatePreprocessor

因此,在共享项目中,我创建了一个空文本文件并将扩展名更改为 .cshtml 并将文件自定义工具从属性更改为

RazorTemplatePreprocessor

生成对应的cs文件

在 cshtml 文件

@using DataBase.Models;

@model List<Brand>

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>

    <div class="container">
        <div class="columns">
            @foreach (var m in Model)
            {
                <div class="one-fifth column">
                    <span class="d-inline-block p-3 bg-red text-white">
                        @m.ModelName
                    </span>
                </div>
                <div class="four-fifths column">
                    <span class="d-inline-block p-3 bg-green">
                        @m.ModelDescription
                    </span>
                </div>
            }
        </div>
    </div>
</body>
</html>

但在循环中模型有错误模型中的var m)

名称“模型”在当前上下文中不存在

解决方法

尝试改变(最好通过你的Model类)

@foreach (var m in Model)

@foreach (var m in @Model)

@model 指令后面应该跟一个 Type,这可以是任何自定义类。

@Model 在整个模板中被引用时,它提供对生成时传递给模板的对象的引用。

更新

例如,您的模型类如下:

public class YourModel{
    ...

    public List<Brand> Brands{ get; set; }

    public class Brand{
       public strin  ModelName{ get; set; }
       public strin  ModelDescription{ get; set; }
    }
 }

然后

@using DataBase.Models;

@model YourModel

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>

    <div class="container">
        <div class="columns">
            @foreach (var m in @Model.Brands)
            {
                <div class="one-fifth column">
                    <span class="d-inline-block p-3 bg-red text-white">
                        @m.ModelName
                    </span>
                </div>
                <div class="four-fifths column">
                    <span class="d-inline-block p-3 bg-green">
                        @m.ModelDescription
                    </span>
                </div>
            }
        </div>
    </div>
</body>
</html>