Возможно, вы используете DataAnnotations
и вспомогательный помощник @Html.DispayFor
.
public class ModelRecord
{
[DataType(DataType.EmailAddress)]
public String EmailAddress { get; set; }
[DataType(DataType.Url)]
public String Website { get; set; }
}
Тогда:
email me at @Html.DisplayFor(x => x.EmailAddress)
or visit me online at @Html.DisplayFor(x => x.Website)
DataTypeAttribute
обрабатывает такие вещи, как URL, сообщений электронной почты и т.д., и форматирует их в зависимости.
Если вы хотите, чтобы настроить все Urls, вы можете создать display template для него:
~/Просмотров/Shared/DisplayTemplates/Url.cshtml
@model String
@if (!String.IsNullOrEmpty(Model))
{
<a href="@Model">@Model.Replace("http://", "")</a>
}
else
{
@:Default text when url is empty.
}
DisplayTemplates
(как EditorTemplates
) является путь, основанный на соглашениях, который использует MVC. из-за этого вы можете поместить шаблон в каталог Shared
, чтобы применить это изменение на уровне всего веб-сайта, или вы можете поместить папку в одну из папок контроллера, чтобы применить ее только к этому контроллеру (например, ~/Views/Home/Displaytemplates/Url.cshtml
). Кроме того, Url
является одним из предопределенных шаблонов включены для использования с DisplayType
, наряду со следующим:
- Url
- EmailAddress
- HiddenInput
- Html
- Текст
Отлично. Большое спасибо. Я должен был использовать '@ Html.DisplayFor (x => modelrecord.Website) вместо этого - этот ответ объяснил это: http://stackoverflow.com/questions/10097995/i-want-to-understand-the-lambda-expression -in-html-displayformodelitem-mymo – northben
@northben: Действительно. Я не знал структуру вашей виртуальной машины, но показывал, как вы отформатируете значение самым простым способом. Как и в случае с вами, вам нужно будет ссылаться на свойство с вложенного объекта модели (и вы видите, как), но предпосылка и декорация одинаковы. –
вы уверены, что 'x => x.Website' будет работать для любой модели? Я, очевидно, новичок в этом, но, похоже, первый x «перезаписывает» второй в этой «без параметров» лямбда. – northben