C# asp.net mvc正确获取json数据,但无法显示在查看页面上

C# asp.net mvc正确获取json数据,但无法显示在查看页面上,c#,asp.net,asp.net-mvc,getjson,C#,Asp.net,Asp.net Mvc,Getjson,我是.NETMVC的初学者。我想我的问题与路线设置有关 我想做的是:我从数据库中获取数据,在控制器中将数据转换为json格式并传递到视图,使用javascript解码json数据并在html上显示 当我在TechnologyController下编写方法时,键入localhost:portnumber/Technology/Index,没有html格式的解码json数据,但如果我键入localhost:portnumber/Technology/GetJson 它向我显示了一个包含纯json数据

我是.NETMVC的初学者。我想我的问题与路线设置有关

我想做的是:我从数据库中获取数据,在控制器中将数据转换为json格式并传递到视图,使用javascript解码json数据并在html上显示

当我在TechnologyController下编写方法时,键入localhost:portnumber/Technology/Index,没有html格式的解码json数据,但如果我键入localhost:portnumber/Technology/GetJson 它向我显示了一个包含纯json数据的页面(这意味着如果我单独调用GetJson()方法,它就会工作)

我在HomeController中编写了相同的代码,它运行正确,所有路由设置都是默认设置: routes.MapRoute( “默认值”,//路由名称 “{controller}/{action}/{id}”,//带参数的URL 新建{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. 
.......
}
)};
)};

$(文档).ready(函数(){
$.getJSON(“Technology/getJSON/”,null,函数(数据){
sss.innerHTML+=data[“title”];//这部分是正确的(我已经测试过了,请忽略),目的是将json数据解析为html。
.......
}
)};
)};
我理解如果我调用“localhost:portnumber/Technology/Index”,它只执行Index方法,这就是为什么不调用GetJson方法,但是为了调用Index()和GetJson,我应该调用什么url。

类似于:

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

如果没有剃须刀,它会像这样:

$.getJSON("<%= Url.Action("GetJson","Technology") %>, null, function(data) {
$.getJSON(“,null,函数(数据){
编辑-

等等,您想调用Index和GetJson吗?这应该已经发生了,只需加载调用Index controller操作的/Index页面,然后在呈现的脚本中调用GJson操作。为什么您认为需要再次调用Index

我想你的方法不会因为url不正确而被点击。抓取fiddler*,看看实际的http流量,看看它是否在404'ing请求中


*(一旦fiddler运行,将您的url更改为……到…)

我想您可以修改“index”方法,以便从“GetJSon”方法获取数据,如下所示

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

希望这有帮助!!

是这样的:我在主页上写了类似的方法,使用默认的路由表,如果我调用“localhost:port”,它会出现在我的主页上,数据工作得很好,如果我调用“localhost:port/home/Index”,那么除了没有数据显示外,一切都很好,getJSON()在javascript中甚至没有被触发,你能告诉我为什么会发生这种情况吗?另外,当我加载localhost:port/Technology/Index时,没有404错误,它打开了我的Index.aspx页面,一切看起来都很好,只是没有数据。我还尝试了“@Url.Action”(“GetJson”,“Technology”),它似乎不起作用。谢谢