链接在Razor中不起作用

时间:2017-02-16 07:19:06

标签: c# html razor

我有这段代码:

<a href="tel:0@Model.Work.Phone">0@Model.Work.Phone</a>

当我使用0@Model.Work.Phone之类的手机时,@符号不会突出显示。这在浏览器中看起来像这样:0@Model.Work.Phone。我的意思是代码显示而不是电话号码。

当我放置这样的空间时:

<a href="tel:0 @Model.Work.Phone">0 @Model.Work.Phone</a>

@符号突出显示,但我希望0@彼此相邻。我怎样才能做到这一点?感谢。

1 个答案:

答案 0 :(得分:1)

在Razor上(至少在2.0或以上),您可以使用explicit expression

<a href="tel:0@(Model.Work.Phone)">0@(Model.Work.Phone)</a>

作为替代方案,您可以使用Gypsy Spellweaver

提供的直接string.format调用

另一种选择是使用Razor委托:

@{
    Func<dynamic, object> phoneformat = (item) =>
        {
            // if we have a string
            if (item is String && !String.IsNullOrEmpty(item))
            {
                // check if the first is not a 0
                if (item[0] != '0')
                {
                    // add it
                    item = String.Format("0{0}", item);
                } 
            }
            else if(item is Int32)
            {
                /// ints never have leading 0, so add it
                item = String.Format("0{0}", item);
            }
            return item;
        };
}

<a href="tel:0@(Model.Work.Phone)">0@(Model.Work.Phone)</a> <br/>
<a href="tel:0@(Model.Work.PhoneInt)">0@(Model.Work.PhoneInt)</a>

<a href="tel:@phoneformat(Model.Work.Phone)">@phoneformat(Model.Work.Phone)</a> <br/>
<a href="tel:@phoneformat(Model.Work.PhoneInt)">@phoneformat(Model.Work.PhoneInt)</a>

以下是我使用的模型:

public class Work
{
    public string Phone { get; set; }
    public int PhoneInt { get; set; }
}

填充它的控制器:

public ActionResult Index()
{
    var model = new MyModel();
    model.Work = new Work {Phone = "612345678", PhoneInt = 612345678};
    return View(model);
}

渲染的html内容如下所示:

<a href="tel:0612345678">0612345678</a> <br/>
<a href="tel:0612345678">0612345678</a>

<a href="tel:0612345678">0612345678</a> <br/>
<a href="tel:0612345678">0612345678</a>