在Mvc 3 razor中查看在模型中基于Null有条件地渲染html的最佳方法是什么

Set*_*man 5 c# asp.net asp.net-mvc razor asp.net-mvc-3

这是一个简单的问题,但我无法解决这个问题.

我想做这样的事....

@(string.IsNullOrEmpty(Model.CustomerUrl) ? "" : <a href="@Model.CustomerUrl">Click me</a>)
Run Code Online (Sandbox Code Playgroud)

此代码段不起作用.

将html与剃刀语法混合并在标签的属性中包含引号使得很难弄清楚.

我喜欢剃刀,除非弄清楚这种东西真的让我感到沮丧.

如果CustomerUrl为null或为空,我很乐意不呈现以下内容...

<p class="customerLink links"><a href="@Model.CustomerUrl">@Model.CustomerName</a></p>
Run Code Online (Sandbox Code Playgroud)

编辑
这仍然不适合我...感谢您的建议.

我的问题是上面的代码在Razor代码块中是ALREADY.这是我无法弄清楚的实际代码......

编辑号码2 - 以下代码现在正在运行

    @if (Model.Count() > 0)
    {
        foreach (var partner in Model)
        {
            <li>
                @Html.ActionLink(@partner.CustomerName, "Details", "Customer", new { id = Customer.AID }, null)<br />
                @partner.Street<br />
//this is what i cannot figure out!!
                @if(!string.IsNullOrEmpty(partner.Phone))
                    {
                        @partner.Phone@:<br />
                    }
                @partner.Distance<br />
            </li>
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在嵌套块(if)之前加上@符号.然后标记
我必须用@分界:然后它工作了.

似乎昨天当我尝试使用嵌套的剃刀代码块时,我得到了一个编译器错误,因为我之前是一个@.所以现在我比以前更加困惑.

事实上......如果我试图用这样的引号包围我的@ partner.Phone ... "@partner.Phone"@:</ br>我得到另一个编译器错误.Razor在它工作时非常棒,但是当它不工作时它会非常混乱.

赛斯

Thi*_*tes 15

如果是,请不要内联.

@if(!string.IsNullOrEmpty(Model.CustomerUrl))
{
    <a href="@Model.CustomerUrl">Click me</a>
}
Run Code Online (Sandbox Code Playgroud)

'努夫赛义德