[英]Referencing Razor field objects to factor C# (MS-MVC 5)
我試圖將 Razor 代碼 (.cshtml) 中的字段引用分解到一個位置,以便更容易更改和復制。 但它不起作用。 它認為“fieldRef”object 是字段本身,因此 label 讀取 output 上的“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>
}
}
將此作為傳遞表達式的示例提及,這似乎是您的目標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.