5

I've got a question regarding ASP.Net MVC.

I'm using an Ajax.ActionLink to load a PartialView.

In this partial view is a javascript function I'd like to get called.

However I can't figure out how to make this happen.

I've tried using AjaxOptions { OnSuccess="functionInPartialView" } when I set the Ajax.ActionLink but for some reason it can't see the Javascript.

EDIT: The PartialView is a mix of JavaScript and Html

ahsteele
  • 26,243
  • 28
  • 134
  • 248
sf.
  • 24,512
  • 13
  • 53
  • 58
  • what do you mean that you can't see the javascript. It's not rendering in the page , or it is not called. – J.W. Dec 03 '09 at 20:51
  • It's not being called. I've tried many different ways of trying to get it to fire. The only way that I found worked was to load the PartialView using a jquery ajax call – sf. Dec 04 '09 at 11:02

4 Answers4

5

I would suggest to use jQuery ($.get/$.ajax). It evaluates the $(function(){}) when you load the partial, so your scripts there fire. And I personally find jQuery easier and cleaner to use.

queen3
  • 15,333
  • 8
  • 64
  • 119
5

Add the javascript code in the view that will contain the parcialview, and next use the ajaxOptions { OnSuccess="functionInView" } when you set the Ajax.ActionLink.

Juan Carlos Velez
  • 2,840
  • 2
  • 34
  • 48
3

If it's only javascript in your partial view, then you should be using a JavaScript Action result, as in this post

Otherwise, the issue is that ajax merely loading content into a div doesn't mean that it executes. In your ajax callback, you need to find the javascript content and eval it, so that your page is aware of the function definition.

I know that's a high level description, but I don't have any samples of doing this. If you post some of the code, maybe someone can suggest a cleaner way of doing this so that you have better access to the script.

Community
  • 1
  • 1
Tim Hoolihan
  • 12,316
  • 3
  • 41
  • 54
  • unfortunately it's not only javascript. Sorry I should have made that more clear – sf. Dec 03 '09 at 15:31
0

You can try Multipartials , you can use them to update multiple views and even run scripts from partials, im not sure about the exact specifics as its been a while, but you can have a look at it and see if it can accomplish what you are looking for

mahlatse
  • 1,322
  • 12
  • 24