Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC3Razor视图中,基于模型中的空值有条件地呈现html的最佳方式是什么_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

C# 在MVC3Razor视图中,基于模型中的空值有条件地呈现html的最佳方式是什么

C# 在MVC3Razor视图中,基于模型中的空值有条件地呈现html的最佳方式是什么,c#,asp.net,asp.net-mvc,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,我相信这是一个简单的问题,但我很难弄清楚这一点 我想做这样的事 @(string.IsNullOrEmpty(Model.CustomerUrl)?“”: 这段代码不起作用 html与razor语法的混合,以及在标记属性中包含引号,这让人很难理解 我喜欢剃须刀,除了弄明白这种东西真的会把我绊倒 如果CustomerUrl为null或空,我希望根本不呈现以下内容 <p class="customerLink links"><a href="@Model.CustomerUrl"

我相信这是一个简单的问题,但我很难弄清楚这一点

我想做这样的事

@(string.IsNullOrEmpty(Model.CustomerUrl)?“”:
这段代码不起作用

html与razor语法的混合,以及在标记属性中包含引号,这让人很难理解

我喜欢剃须刀,除了弄明白这种东西真的会把我绊倒

如果CustomerUrl为null或空,我希望根本不呈现以下内容

<p class="customerLink links"><a href="@Model.CustomerUrl">@Model.CustomerName</a></p>

编辑
这对我仍然不起作用…不过谢谢你的建议

我的问题是上面的代码已经在Razor代码块中。这是我无法理解的实际代码

编辑第二条-下面的代码正在运行

    @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>
        }
    }
@if(Model.Count()>0)
{
foreach(模型中的var合作伙伴)
{
  • @ActionLink(@partner.CustomerName,“详细信息”,“客户”,新的{id=Customer.AID},空)
    @partner.Street
    //这是我无法理解的!! @如果(!string.IsNullOrEmpty(partner.Phone)) { @合作伙伴。电话@
    } @伙伴距离
  • } }
    我在嵌套块(if)前面加了@符号。然后,标记
    我必须用@来界定:然后它就起作用了

    似乎昨天当我试图使用嵌套的razor代码块时,我遇到了一个编译器错误,因为我在它前面加了@。所以现在我比以前更困惑了

    事实上…如果我试着用这样的引语围绕我的@partner.Phone<代码>“@partner.Phone”@:我收到另一个编译器错误。剃须刀是伟大的,当它工作,但当它不它是非常混乱

    赛斯

    不要做内联if

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

    努夫说,你会在互联网上找到一条关于条件输出和观点的建议,那就是不应该把两者混为一谈。如果您需要根据某些条件显示某些内容,那么您应该创建一个HTML帮助器。但是,为了回答您的问题,您可以这样做(如果您不想麻烦助手):

    @if (!String.IsNullOrWhitespace(Model.CustomerUrl))
    {
        <p class="customerLink links">
            <a href="@Model.CustomerUrl">@Model.CustomerName</a>
        </p>
    }
    
    @if(!String.IsNullOrWhitespace(Model.CustomerUrl))
    {
    

    }
    大概在这一行之前,您有html显示,所以要向razor表示您正在使用代码,您需要@符号

        foreach (var partner in Model)
        {
    
    您已经在一个代码块中,因此@符号在这里不起作用

            <li>
    
    在C#中不起作用。您正在代码中创建一个对象,而不使用它


    希望这有助于解释。

    我编辑了我的问题。你能再看一下吗。如果它已经在一个razor代码块中了呢?我现在才看到,几个月后。这也适用于razor代码块。只需从if语句中删除@。我不确定您是否建议不使用所显示的代码,是否批评它为“内联if”,或者您是否建议所显示的代码实际上是正确的方式。。。“inline if”在其他地方,您可以使用显示的代码。如果那个OP建议的话,原来的内联是行不通的。内联if是(bool?true:false)语法。我在这里说的是,只要在if之前删除前面的@符号,我给出的“if”块语句就可以在另一个代码块中工作。一步一步地解释这一点非常好!对于新手来说,我认为这可能非常有用。我希望有更多的代码片段,包括这样的评论。
        foreach (var partner in Model)
        {
    
            <li>
    
                @if(!string.IsNullOrEmpty(partner.Phone))
                {
                    @partner.Phone@:<br />
                }
    
    if(something)
        ""