На Razor (по крайней мере, на 2,0 или выше), вы можете использовать explicit expression:
<a href="tel:[email protected](Model.Work.Phone)">[email protected](Model.Work.Phone)</a>
В качестве альтернативы вы можете использовать прямой вызов string.Format предоставлямого Gypsy Spellweaver
Другой альтернативой является используя 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:[email protected](Model.Work.Phone)">[email protected](Model.Work.Phone)</a> <br/>
<a href="tel:[email protected](Model.Work.PhoneInt)">[email protected](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>
Я ожидаю [явное выражение] (HTTP: // haacked .com/archive/2011/01/06/razor-syntax-quick-reference.aspx /) может работать: '0 @ (Model.Work.Phone)' – rene
@rene Скопировали бы скобки в браузере? Благодарю. – jason
У меня нет коробки, чтобы попробовать, но на основании того, что я помню, они не появляются. – rene