我想在视图中将.Net对象转换为JSON.我的视图模型是这样的,
public class ViewModel{
public SearchResult SearchResult { get; set;}
}
public class SearchResult {
public int Id { get; set; }
public string Text{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想转换Model.SearchResult为JSON对象.我正在这样做:
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
//....
var s = @serializer.Serialize(Model.Institution);
Run Code Online (Sandbox Code Playgroud)
但结果是这样的,
var s = { "Name":"a","Id":1};
Create:228Uncaught SyntaxError: Unexpected token &
Run Code Online (Sandbox Code Playgroud)
如何将其正确转换为JSON对象?
我有这个索引动作:
public ActionResult Index()
{
var repo = (YammerClient) TempData["Repo"];
var msgCol = repo.GetMessages();
ViewBag.User = repo.GetUserInfo();
return View(msgCol.messages);
}
Run Code Online (Sandbox Code Playgroud)
GetMessages返回POCO消息列表,GetUserInfo返回一个POCO,其中包含用户信息(id,name等).
我想用用户信息的JSON表示填充javascript变量.
所以我想在视图中做这样的事情:
...
<script>
var userInfo = "@ViewBag.User.ToJson()"
</script>
...
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用,但有办法吗?我想避免在加载页面后只是为了获取用户信息而执行ajax请求.
我有c#class say更像AjaxOptions的选项.
public class options
{
public string Url {get;set;}
public string httpMethod {get;set}
}
Run Code Online (Sandbox Code Playgroud)
和这样的javascript函数
function dosomething(obj)
{
if (obj.Url!="" and obj.HttpMethod=="something")
loadsomething();
}
Run Code Online (Sandbox Code Playgroud)
现在在我的Controller动作中
public class mycontroller : controller
{
public ActionResult WhatToDo()
{
options obj = new options{Url="someurl"};
return PartialView(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我需要这个对象类型的字符串,我应该能够传递给我的方法.
@model options
<script>
dosomething(@model.SomeFunctionToConverToString())
</script>
Run Code Online (Sandbox Code Playgroud)
所以我需要这个SomeFunctionToConverToString方法,我将这个对象转换为字符串.
谢谢
我有以下控制器:
public class HelloController
{
public ActionResult Index()
{
return View()
}
public ActionResult Hello()
{
return Json(new{ greeting = "hello, world!" }, JsonRequestBehavior.AllowGet);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,里面Index.cshtml:
...html stuffs
<script type="text/javascript">
alert("@Html.Action("Hello")");
</script>
Run Code Online (Sandbox Code Playgroud)
我发现,当我在浏览器中访问此URL时,响应内容类型会application/json; charset=utf-8导致浏览器将html呈现为字符串而不是...网页.
什么是最好的解决方法?
我有一个强类型的View接受Customer模型,这个客户模型是一个LINQ2SQL部分类,它有一个名为Journeys的属性,它返回与该Customer关联的所有Journeys.
我想知道是否可以从Javascript中作为JSON对象访问Customer.Journeys属性.
这可能吗?如果是这样,我将如何访问它?我是否最好创建一个FormViewModel并将Customer详细信息和Journey详细信息存储为JSON对象,并使用以下内容将其传递给javascript函数:
<% MyJavascriptFunction(Model.JSONJourneys) %>
Run Code Online (Sandbox Code Playgroud)
或者我应该更改Journeys分部类并添加.ToJson()属性?还是完全不同的东西?
谢谢.
asp.net-mvc ×4
javascript ×3
json ×3
asp.net ×1
content-type ×1
jquery ×1
jsonresult ×1
object ×1
viewbag ×1