asp.net mvc правильно получает данные json, но не может отображаться на странице просмотра - PullRequest
1 голос
/ 20 сентября 2011

Я новичок в .net MVC.Я предполагаю, что моя проблема связана с настройкой маршрута.

То, что я хочу сделать: я получаю данные из базы данных, в контроллере передаю данные в формат json и передаю для просмотра, использую javascript-декодирование данных json и показываю наhtml.

Когда я пишу методы в TechnologyController, набираю localhost: portnumber / Technology / Index, нет декодированных данных json в формате html, но если я набираю localhost: portnumber / Technology / GetJson, он показывает мне страницу с чистымДанные JSON (что означает, что если я вызываю метод GetJson () отдельно, он работает)

Я пишу тот же код в HomeController, он работает правильно, все настройки маршрута по умолчанию: rout.MapRoute ("Default",// Имя маршрута "{controller} / {action} / {id}", // URL с параметрами new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Параметры по умолчанию);

// Это мой контроллер

public class TechnologyController : Controller
{
public ActionResult Index()
{

return View();
}

public JsonResult GetJson() 
{

Technology myTech = new Technology(); //get data from database (Tested correct) 
return Json(myTech.select(), JsonRequestBehavior.AllowGet);

}
}

// Это Javascript:

<script type="text/javascript">

$(document).ready(function() {

$.getJSON("Technology/GetJson/", null, function(data) {

sss.innerHTML+=data["title"];// this part is correct (I already tested,please ignore), the purpose is to parse json data to html. 
.......
}
)};
)};

Я понимаю, если я называю "localhost: portnumber / Technology / Index",это только выполнить индекс мВот почему метод GetJson не вызывается, но какой URL-адрес следует вызывать для вызова index () и GetJson.

Ответы [ 2 ]

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

Полагаю, вы могли бы изменить порядок «index» для получения данных из метода «GetJSon», как показано ниже.

 public ActionResult Index() 
 {  
     return View("GetJson"); 
 }

Надеюсь, это поможет !!

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

что-то вроде:

$.getJSON("@Url.Action("GetJson","Technology"), null, function(data) {

edit 2-

Без Razor это будет выглядеть так:

$.getJSON("<%= Url.Action("GetJson","Technology") %>, null, function(data) {

Edit-

ПодождитеВы хотите позвонить в Index AND GetJson?Это должно уже происходить, просто загрузите страницу / index, которая вызывает действие контроллера индекса, а затем в отрисованном скрипте оттуда вы вызываете действие GJson.Почему вы думаете, что вам нужно снова позвонить в Индекс?

Я полагаю, ваш метод не получил удар, потому что URL-адрес неверен.Возьмите fiddler *, взгляните на действительный http-трафик и посмотрите, идет ли он по запросу 404.

* (после запуска fiddler измените ваш URL-адрес на http://localhost:port/..... на http://localhost.:port/.....)

...