asp.net mvc3访问JsonResult返回的Json数据怎么访问?

publicclassAutocompleteController:Controller{////GET:/Autocomplete/privateEProductDBE... public class AutocompleteController : Controller
{
//
// GET: /Autocomplete/
private EProductDBEntities db = new EProductDBEntities();

public JsonResult Products(string prd_keyword)
{
var model = from p in db.product
where p.name.Contains(prd_keyword)
select p;
var products = model.Select(p => new {value = p.name});
return Json(products, JsonRequestBehavior.AllowGet);
}

}
有以上控制器,希望在其它视图文件里返回此action的json数据怎么返回?我试过用@url.Action,不过只能返回url,怎么办呢?
展开
 我来答
雨月蓝
2013-08-21 · TA获得超过765个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:253万
展开全部
JsonResult 是负责处理请求,返回结果的,如 Ajax
直接URL请求的话,就是只在页面上输出结果,
其不能用来返回页面,所以你想在视图上调用是不行的

如果你想在页面调用方法中的数据可以使用两种方法

View(object model)

ViewData["key"] = object value

public JsonResult Products(string prd_keyword)
{
var model = ...;
var products = model.Select(p => new {value = p.name});
ViewData["key1"] = products;//2
return View(products);//1
}

1.在视图的第一行,声明 model 的类型
@model System.Object //一定要在第一行,m 为小写
使用 @Model.Attribute //M 为大写
由于你的代码返回的是迭代的匿名类,所以页面上无法用 “.”跟着属性名来调用
建议你将其填充为实体类对象(集合),传到页面上使用
当然写在第一行的 model 的类型也要跟着改变

2.使用 @(ViewData["key1"] as System.Object).Attribute
其用法和 Session 一样,返回为 object 所以要类型转换,
但它只在当前请求页面有效
小宝爸爸笔记
2013-08-21 · TA获得超过2297个赞
知道小有建树答主
回答量:904
采纳率:50%
帮助的人:663万
展开全部
要用jquery去请求 再把data给对你Autocomplete 控件的 datasource
$.post("/Autocomplete/Products",{"prd_keyword":key},function(data){
// data 就是你要的 json 数据。 key是你要传进去的值。
})
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式