Вы используете неправильную перегрузку метода Html.ActionLink
.
Вы используете эту перегрузку ActionLink(HtmlHelper, String, String, Object)
, третий параметр - значения маршрута, нет htmlAttributes
.
Вы должны использовать перегрузку ActionLink(HtmlHelper, String, String, Object, Object)
, здесь третьим параметром являются значения маршрута, но четырьмя являются htmlAttributes
Так что вам просто нужно передать ноль в третий параметр [ 1112]
@Html.ActionLink("Back", "Index", null, new {id="backbtn"})
Можно извлечь фактическое Url
и Description
от значения столбца этот путь:
SPFieldUrlValue fieldValue = new SPFieldUrlValue(myItem["URL"].ToString());
string linkTitle = fieldValue.Description;
string linkUrl = fieldValue.Url;
Поскольку на самом низком уровне, все поля Sharepoint хранятся как строки. Метод GetFieldValue SPField признает, что строка, и именно до логики того полевого класса чтения представляет в виде строки и преобразовывает его в значимый объект значения.
объект ["Имя поля"] возвращает родовой объект, который представляет значение поля. Отдельно объект обычно бесполезен, за исключением необработанного строкового представления данных.
При использовании GetFieldValueAsHtml () метод он возвратится <a href="url">title</a>
:
//if field is of type Hyperlink, returns <a href="url">title</a>
item.Fields["FieldName"].GetFieldValueAsHtml(item["FieldName"])
Или
//if field is of type Hyperlink, returns Url, Title
item.Fields["FieldName"].GetFieldValueAsText(item["FieldName"])
Или
//if field is of type Hyperlink, returns Url
item.Fields["FieldName"].GetValidatedString(item["FieldName"])
Именно так SharePoint хранит ссылки. Сначала URL и затем Заголовок это на самом деле показывают на странице.
Из документации SharePoint:
"Поле URL исключительно состоит из двух строк, разделенных запятой и пространством. Одна строка содержит путь URL, и другой содержит описание, используемое в качестве связанного гиперссылками текста".
Необходимо разделить строку для получения двух частей.
string url = field["URL"].Split(',')[0];
string title = field["URL"].Split(',')[1];
Код не оптимален, но только показать Вам точно, что я имею в виду.
Oliver, Вы не указывали версию SharePoint. Мой ответ является на 2003 версией. Если Вы имеете MOSS, смотрите на классы SPFieldUrl и SPFieldUrlValue.
Свойство URL-адреса SPListItem возвращает URL-адрес для SPListItem, включая имя библиотеки List / Documetn, но не возвращает полный URL-адрес, включая имена серверов и сайтов.
Чтобы получить полный URL-адрес, вы можете либо объединить SPLIstItem.Web.Url и SPListItem.URL, либо извлечь полный URL-адрес из данных SPListItem.XML следующим образом:
foreach (SPListItem item in list.Items)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(item.Xml);
XmlNamespaceManager nsm = new XmlNamespaceManager(xmlDoc.NameTable);
nsm.AddNamespace("z", "#RowsetSchema");
string fullURL = xmlDoc.SelectSingleNode("z:row", nsm).Attributes["ows_EncodedAbsUrl"].Value;
}
http://insomniacgeek.com/code/how-to -get-the-full-url-from-splistitem-in-sharepoint /