在C#ASP.NET视图中动态嵌入Html属性

本文关键字:Html 属性 动态 C#ASP NET 视图 | 更新日期: 2023-09-27 18:28:34

如果满足条件,我将尝试动态设置div的属性(数据状态)。

我目前正在使用@Html.Raw助手,但它没有进入元素。

我也尝试过使用Response.Write(),但它只是将所有内容都写入页面顶部。

有没有最好的方法将其嵌入到代码中,或者创建/设置一个新的属性?

@foreach (var r in Model)
    {
        <div class="marker"
             data-date="@r.date_finished"
             data-name="@r.name"
             @if (r.complete == "CP")
                 {
                     @Html.Raw("data-status='complete'");
                 }
         >
         </div>
     }

在C#ASP.NET视图中动态嵌入Html属性

这应该做到:

<div class="marker"
     data-date="@r.date_finished"
     data-name="@r.name"
     @{if (r.complete == "CP") { <text>data-status='complete'</text> }}>

请注意<text>标记的用法。这是Razor用来按原样输出内容的一个特殊标签。

当我遇到这个场景时,我使用第三个表达式:

<div @(r.complete == "CP" ? "data-status='complete'" : "") >

如果您的逻辑更复杂,您也可以使用静态助手方法。

<div @r.RenderComplete() >
public static class  RExtension{
    public static string RenderComplete( this R r){
        // logic here
    }
}