2013-09-15 4 views
0

У меня есть Ajax ActionLink:Asp.NET MVC 4 Ajax ActionLink необходима помощь

@Ajax.ActionLink("Science Package", "GetScience", new AjaxOptions { OnSuccess = "ShowData" }) 

Вся идея заключается в том, что тот факт, onclicking ссылку, он будет получать все данные из метода GetScience (который возвращает Список объектов) и отображает его в div. Вопрос в том, как это сделать? Я пытаюсь использовать метод OnSuccess, чтобы поймать результаты, перебрать значения и отобразить их в представлении. Но, похоже, это не работает. Пожалуйста помоги?

+0

Вы добавили ** jquery.unob trusive-ajax.min.js ** скрипт в заголовке? –

+0

MVC4 требует добавления: @ Scripts.Render ("~/bundles/jqueryval"), и этого достаточно. Я попытался вернуть одну строку из метода & t отлично. Проблема возникает со списком возвращаемых объектов. – soumadeep

+0

Можете ли вы поделиться своими данными JSON, которые возвращаются методом действия GetScience? –

ответ

0

@soumadeep согласно дискуссии я считаю, дата метод поиска в вашем случае должен быть, как показано ниже

Контроллер:

public JsonResult GetScience() 
{ 
    var courseModel _db.Courses.ToList(); 
    return Json(courseModel, JsonRequestBehavior.AllowGet); 
} 

Просмотр JS:

function ShowData(result) { 
    console.log(result); 
} 
+0

Успешно вернул JsonResult, мой вопрос был, не удалось ли вернуть список объектов так, как я сделал? – soumadeep

+0

@soumadeep, нет, потому что должна быть форма URL, якорь которой может получить данные. –

+0

okk ... большое спасибо, всего лишь один последний запрос. Я верю, что можно предотвратить всплывающее окно json, чтобы сохранить данные json из всплывающего экрана каждый раз, когда я нажимаю ссылку: P – soumadeep

0
Just to update everything in a nutshell, after grilling for a lot of time & @kundan's suggestions did what i wanted to acheive. The details are below: 

**The link:** 

    @Ajax.ActionLink("Science Package", "GetScience", new AjaxOptions{OnSuccess = "UpdateData" }) 

**The Action:**  

public JsonResult GetScience() 
    { 
     var courseModel = _db.Courses.ToList(); 
     // return ""; 
     return Json(courseModel, JsonRequestBehavior.AllowGet); 

    } 

**The JS:** 

    <script type="text/javascript"> 
     function UpdateData(data) { 
      var target = $("#Context"); 
      target.empty(); 
      for (var i = 0; i < data.length; i++) { 
       var product = data[i]; 
       target.append("<ul><b><ul>" + product.Name + "</ul></b><ul>" + product.Description + "</ul><b><ul>" + product.FacultyName + "</ul></b><ul>" + product.Price+ "</ul></ul>"); 
      } 
     } 
    </script> 


**The JS includes in layout file:** 

    <script src="~/Scripts/jquery-1.7.1.js"></script> 
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 

The above steps will help you make async calls to Action methods & return results on the same page/ partial views. 
Question, let me know by mail. Will be more than happy to get grilled :) 
Смежные вопросы