Изящная деградация с Ajax.ActionLink (), не в состоянии заставить его работать, проверьте мой синтаксис. (MVC3) - PullRequest
2 голосов
/ 30 сентября 2011

Я указал метод Action, который будет использоваться для асинхронного запроса с Url.Action, но в отличие от указания параметров ajax для формы и их хранения, т. Е.

 AjaxOptions ajaxOpts = new AjaxOptions {
UpdateTargetId = "tabledata",
Url = Url.Action("AppointmentData")
};

И чем просто передать этот ajaxOpts"в Ajax.BeginForm () Я не могу сохранить параметры ajax в переменной и передать его в Ajax.ActionLink.Пожалуйста, ознакомьтесь с синтаксисом, который я пытаюсь использовать ниже:

@Ajax.ActionLink(cat.CATNAME, ajaxOpts, new { CatID = cat.CATID, count = Model.Count },
AjaxOptions ajaxOpts = new AjaxOptions
{
    UpdateTargetId = "catlist-" + Model.Count,
    Url = Url.Action("GetCats")

})

Хотя что-то похожее на приведенное ниже без попытки использовать постепенную деградацию, конечно, работает нормально, но с отключенным jscript он просто генерирует частичное представление без остальной части страницы.:

@Ajax.ActionLink(cat.CATNAME, "GetCats", new { CatID = cat.CATID, count = Model.Count },
new AjaxOptions
{
    UpdateTargetId = "catlist-" + Model.Count,  
})

Понятно, что когда вы не указываете URL-адрес для формы и вместо этого просто используете AjaxOptions в качестве параметра и jscript отключен, форма просто по умолчанию отправляет обратно в Action, который отображалстраница.Но возможно ли нечто подобное для ActionLink?

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Это связано с тем, что вам потребуется другое действие и / или проверка сообщения AJAX для метода действия вашего контроллера. Когда у вас включен javascript, вы запрашиваете частичное представление и сообщаете javascript, какую цель (div или span или что-то еще) обновить с этим частичным представлением. Когда javascript выключен, кажется, что вы все еще возвращаете только частичное представление, а не полное представление. Поскольку javascript отключен, вы не обновляете div, а просто визуализируете частичное.

Короче говоря, когда это не AJAX-запрос (JS выключен), вам нужно, чтобы ваш метод действия возвращал полный просмотр, поскольку вы не можете обновить часть страницы без включенного JavaScript.

0 голосов
/ 30 сентября 2011

Вы можете использовать этот синтаксис:

@Ajax.ActionLink(cat.CATNAME, "GetCats", new AjaxOptions { UpdateTargetId = "catlist-" + Model.Count })
...