MVC DisplayTemplate不显示C#字符串变量
我的主模型名为Project,它有两个Address类型的变量,Address是我定义的一个类。因为我想根据定义的字段动态格式化地址。我的DisplayTemplate的代码是: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
@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 `@`
}
即使整段代码都用@{…}
-是:)-你试过了吗?我明天才会再看到代码,但我会让你知道它是否有效!