Наличие Ajax.ActionLink без текста (отображается как кнопка jQuery только с одним значком) - PullRequest
3 голосов
/ 02 марта 2012

Я использую следующий метод ActionLink ajax.

@Ajax.ActionLink(" ", "RemovePerson", "General", new { PersonId = item.PersonId }, new AjaxOptions { Confirm = "Are you sure?", HttpMethod = "Delete", OnSuccess = "JsonDelete_OnSuccess" }, new { @class = "PersonRemove" }) 

$().ready(function () {
    $(".PersonRemove").button({ icons: { primary: "ui-icon-trash"} });
})

Результат показан ниже:

enter image description here

Как видите, параметр linkText имеет значение "". Я не хочу никакого текста в моей кнопке. Только одна иконка. Я не нашел другого решения для использования ajax ActionLink без текста, но я не очень доволен им. Мне нужно несколько советов по этому поводу.

Есть ли лучшее решение , чем этот ActionLink с первым параметром как ""?

Я бы предпочел что-то вроде:

@Ajax.ActionLink(null, ....

Но это не работает. Я получил ошибку «Значение не может быть пустым или пустым»

Спасибо.

Ответы [ 3 ]

0 голосов
/ 02 марта 2012

Ссылка на действие действительно не допускает пустых строк в качестве текстового параметра.

Быстрое исправление, очень неприятное imho, может заключаться в добавлении следующего javascript после вызова .button ():

$(".PersonRemove .ui-button-text").remove();
0 голосов
/ 29 марта 2012

Я предпочитаю определять стиль с отступом текста, равным -9999px.Это скрывает текст.Например:

a.settingsButton 
{
    position:absolute;
    width:95px;
    height:95px;
    background:url(images/settingsButton.png) 0 0 no-repeat;
    text-decoration: none; 
    top:20px;
    left:125px;
    text-indent: -9999px; /* hides the link text */
}
0 голосов
/ 02 марта 2012

Действительно, это раздражает.Вы можете написать собственный помощник MyActionLink:

public static IHtmlString MyActionLink(
    this AjaxHelper ajaxHelper, 
    string actionName, 
    string controllerName, 
    object routeValues, 
    AjaxOptions ajaxOptions, 
    object htmlAttributes
)
{
    return ajaxHelper.ActionLink(
        " ", 
        actionName, 
        controllerName, 
        routeValues, 
        ajaxOptions, 
        htmlAttributes
    );
}

, а затем:

@Ajax.MyActionLink(
    "RemovePerson", 
    "General", 
    new { 
        PersonId = item.PersonId 
    }, 
    new AjaxOptions { 
        Confirm = "Are you sure?", 
        HttpMethod = "Delete", 
        OnSuccess = "JsonDelete_OnSuccess" 
    }, 
    new { @class = "PersonRemove" }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...