c# - 将 Razor 字段对象引用到因子 C# (MS-MVC 5)
问题描述
我正在尝试将 Razor 代码 (.cshtml) 中的字段引用分解到一个位置,以便它们更容易更改和复制。但它不起作用。它认为“fieldRef”对象是字段本身,因此标签在输出上读取“fieldRef”。
@{object fieldRef = null; }
<div class="col-md-4">
@{ fieldRef = Model.ExcludeWords;}
@Html.LabelFor(Model => fieldRef, htmlAttributes:
new { @class = "control-label", @style = "color:#004400" })
@Html.EditorFor(Model => fieldRef,
new
{
htmlAttributes = new
{
@class = "form-control"
}
})
@Html.ValidationMessageFor(Model => fieldRef, "", new { @class = "text-danger" })
</div>
@* More fields to follow this pattern... *@
请注意,“fieldRef”被引用了 3 次。问题不是阻碍,但如果我能让参考文献工作,我可以简化很多编码任务。
解决方案
在 ASP.NET Core Razor Pages 中,我替换了以下内容:
<dl class="row">
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Course.Title)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Course.Title)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Course.Credits)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Course.Credits)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Course.Department)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Course.Department.DepartmentID)
</dd>
</dl>
和:
<dl class="row">
@{
await Template1(model => model.Course.CourseID);
await Template1(model => model.Course.Title);
await Template1(model => model.Course.CourseID);
await Template2(model => model.Course.Department, model => model.Course.Department.DepartmentID);
}
</dl>
其中Template1
和Template2
在文件顶部定义:
@{
async Task Template1<T>(Expression<Func<DeleteModel, T>> expr)
{
<dt class="col-sm-2">
@Html.DisplayNameFor(expr)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(expr)
</dd>
}
async Task Template2<T1, T2>(Expression<Func<DeleteModel, T1>> expr_a, Expression<Func<DeleteModel, T2>> expr_b)
{
<dt class="col-sm-2">
@Html.DisplayNameFor(expr_a)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(expr_b)
</dd>
}
}
将此作为传递表达式的示例,这似乎是您的目标。
推荐阅读
- html - 在绝对定位的 div 内响应缩放和裁剪图像
- ruby-on-rails - Ruby-Rails 序列化程序如何在索引和显示路由上显示不同的属性
- php - 登录模态 Yii
- oauth-2.0 - Twinfield 如果使用 oAuth,您需要会话吗?
- terraform - 在 Terraform 中导入的目的是什么?
- apache-flink - 如果在给定的时间间隔内未收到下一个事件,则超时 CEP 模式
- python - Folium Maps 中的交叉过滤
- reactjs - Gatsby.js 图像模糊
- c++ - 如何在 Visual Studio Code 中创建 C++ 头文件?
- flutter - 当滚动视图到达中间时,如何从 api 在 Flutter 网格视图构建器中添加新项目