2012-06-06 2 views
0

У меня есть приложение MVC3, которое использует сетку Telerik. У меня есть следующее действие:Действие MVC не вызывается из сетки

public ActionResult FileDownload(string id) 

На моей сетке у меня есть ClientTemplate, который отображает маленькую коробку. когда пользователь нажимает на поле, я хочу, чтобы действие было вызвано. Heres мой сетки (только одна линия его для краткости):

columns.Bound(c => c.DocID).ClientTemplate("<div><a href=\"javascript:void(0);\" 
    class=\"link-button-small\" onclick=\"javascript:downloadFile(<#= DocID #>)\">...</a> 
</div>"); 

Это мой JavaScript:

function downloadFile(docId) { 
    var url = "@(Url.Content("~/OrderDetails/FileDownload/"))" + docId; 
    $('#downloadFrame').attr('src',url); //dumping some data to an iFrame 
} 

Код JavaScript функция называется просто отлично, но мое действие никогда не выполняется. Я могу вызвать свое действие, используя другие методы, такие как использование ClientEvents в сетке Telerik, поэтому мое действие прекрасное. Кто-нибудь знает, почему мое действие не вызвано при использовании шаблона клиента? Благодаря

+0

Как выглядит отображаемый HTML для столбца? –

+0

... 5033799_Capture.PNG
BoundForGlory

+2

ОК. Следующий вопрос: каково значение 'url' в вашей js-функции? Если это неверно, вы можете использовать 'Url.Action (« ... action ... »,« ... controller ... »)' вместо этого. –

ответ

0

Попробуйте

columns.Bound(c => c.DocID).ClientTemplate("<div><a href='javascript:' class='link-button-small' onclick='downloadFile(<#= DocID #>)'>...</a></div>"); 

На основе этого Telerik Forum post.

Возможно, возникла проблема с escape-последовательностью.

+0

Спасибо, что ответили, но это, похоже, исправление, если javascript не вызван. Мой javascript называется штрафом, но действие, которое javascript пытается вызвать на сервере, никогда не запускается. – BoundForGlory

+0

Если вы размещаете предупреждение (url) между var url и $ ('# downloadFrame'), он фиксирует правильный URL-адрес? –

Смежные вопросы