MVC DisplayTemplate不显示C#字符串变量

MVC DisplayTemplate不显示C#字符串变量,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我的主模型名为Project,它有两个Address类型的变量,Address是我定义的一个类。因为我想根据定义的字段动态格式化地址。我的DisplayTemplate的代码是: @model ProjectClearanceApp.Models.Project.Address @{ string addr = ""; if (!String.IsNullOrEmpty(Model.Line1)) { addr += (Model.Line1 + "\n

我的主模型名为Project,它有两个Address类型的变量,Address是我定义的一个类。因为我想根据定义的字段动态格式化地址。我的DisplayTemplate的代码是:

@model ProjectClearanceApp.Models.Project.Address

@{
    string addr = "";
    if (!String.IsNullOrEmpty(Model.Line1))
    {
        addr += (Model.Line1 + "\n");
    }
    if (!String.IsNullOrEmpty(Model.Line2))
    {
        addr += (Model.Line2 + "\n");
    }
    if (!String.IsNullOrEmpty(Model.City))
    {
        addr += Model.City;
    }
    if (!String.IsNullOrEmpty(Model.State))
    {
        addr += (", " + Model.State);
    }
    if (Model.ZipCode != 0)
    {
        addr += (", " + Model.ZipCode);
    }
    Html.Raw(addr);
}
我之所以使用字符串变量并附加到它,是因为我最初将显示模板定义为:

@model ProjectClearanceApp.Models.Project.Address

@if (!String.IsNullOrEmpty(Model.Line1))
{
    @Html.DisplayFor(model => model.Line1)
    <br />
}
@if (!String.IsNullOrEmpty(Model.Line2))
{
    @Html.DisplayFor(model => model.Line2)
    <br />
}
@if (!String.IsNullOrEmpty(Model.City))
{
    @Html.DisplayFor(model => model.City)
}
@if (!String.IsNullOrEmpty(Model.State))
{
    @:, @Html.DisplayFor(model => model.State)
}
@if (Model.ZipCode != 0)
{
    @:, @Html.DisplayFor(model => model.ZipCode)
}
@model ProjectClearanceApp.Models.Project.Address
@如果(!String.IsNullOrEmpty(Model.Line1))
{
@DisplayFor(model=>model.Line1)

} @如果(!String.IsNullOrEmpty(Model.Line2)) { @DisplayFor(model=>model.Line2)
} @如果(!String.IsNullOrEmpty(Model.City)) { @DisplayFor(model=>model.City) } @如果(!String.IsNullOrEmpty(Model.State)) { @:,@Html.DisplayFor(model=>model.State) } @如果(Model.ZipCode!=0) { @:,@Html.DisplayFor(model=>model.ZipCode) }
但是,因为最后三个DisplayFor位于不同的行上(至少我认为,我可能是错的),所以地址将显示为
FakeCity、FakeState、12345
,每个逗号前都有一个空格(如果有人对此有快速解决方案,这将解决我所有的问题)


但是,当我使用字符串时,它根本不会在我的页面上显示变量。我在最后一行(
Html.Raw(addr);
)上设置了一个断点,当我的代码处理地址时,
addr
具有正确的值,但当它呈现页面本身时,什么也没有显示。我试过
Html.Display(addr)
Html.DisplayText(addr)但仍然没有运气

您需要在
Html.Raw()中添加一个前导
@
。否则,您只需执行该方法,而不返回其值并输出其生成的结果

@model ProjectClearanceApp.Models.Project.Address
@{
    string addr = "";
    ....
    @Html.Raw(addr); // add leading `@`
}

即使整段代码都用
@{…}
-是:)-你试过了吗?我明天才会再看到代码,但我会让你知道它是否有效!