问题描述
我想使用 razor 模板我在 windows 上使用 vs19 没有创建新的选项
RazorTemplatePreprocessor
因此,在共享项目中,我创建了一个空文本文件并将扩展名更改为 .cshtml 并将文件自定义工具从属性更改为
RazorTemplatePreprocessor
在 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>