标签: jsonresult

使用JSON.Net序列化EF4.1实体

我正在使用MVC3,Razor视图引擎,使用工作单元的存储库模式构建应用程序,并使用EF4.1 Code First来定义我的数据模型.

这里有一些背景(如果你想要的话就会有光泽).

应用程序本身只是一个Intranet"菜单".

2个主要实体是MenuItem和Department,其中:

  • MenuItem可以有许多部门
  • 部门可以有许多MenuItem
  • MenuItem可以将MenuItem作为父项

这就是我定义我的实体的方式

public class MenuItem
{
   public int MenuItemId { get; set; }
   public string Name { get; set; }
   public string Url { get; set; }
   public virtual ICollection<Department> Departments { get; set; }
   public int? ParentId { get; set; }
   public virtual MenuItem ParentMenuItem { get; set; }
}

public class Department
{
   public int DepartmentId { get; set; }
   public string Name { get; set; }
   public virtual ICollection<MenuItem> …
Run Code Online (Sandbox Code Playgroud)

serialization json.net entity-framework-4 jsonresult asp.net-mvc-3

6
推荐指数
1
解决办法
3139
查看次数

多租户应用程序允许一个用户访问许多租户帐户?

我正在使用每个租户模型一个数据库编写多租户应用程序.我允许每个用户帐户访问多个租户(只要该租户已授予他们访问权限)

发送到浏览器的每个页面都包含Site.Master中的当前TenantId

<%= Html.Hidden("TenantId") %>
Run Code Online (Sandbox Code Playgroud)

但是当从浏览器发出任何请求(提交按钮,AJAX GET或AJAX POST)时,实际上不会检查此TenantId是否与用户当前的TenantId匹配.

现在,如果用户打开一个选项卡,TenantId = 1,则连接到另一个选项卡中的另一个租户,TenantId = 2,然后切换回第一个选项卡,它可以访问租户2中的数据.

我该怎么做才能解决这个问题?我有大量现有的ActionResult和JsonResult方法,我不想通过它们中的每一个并添加

if (request.TenantId != user.CurrentTenantId) return false
Run Code Online (Sandbox Code Playgroud)

因为这将是大量的重复工作

我可以将基本控制器更改为始终读取TenantId的值吗?这可能适用于提交的请求(ActionResult),但是AJAX请求呢?

如何检查JsonResult操作中页面的TenantId而不更改每个现有的AJAX方法(其中有很多)?

c# ajax asp.net-mvc multi-tenant jsonresult

6
推荐指数
1
解决办法
1128
查看次数

使用ASP.NET MVC的JsonResult类返回多个对象

是否有可能使用ASP.NET MVC'S JsonResult类的多个对象....这是一个控制器方法,它返回我的记录的json对象,但我也想传递计数值....

var materials = consRepository.FindAllMaterials().AsQueryable();
var count = materials.Count();
var results = new PagedList<MaterialsObj>(materials, currentPage-1, pageSize);
return Json(results);
Run Code Online (Sandbox Code Playgroud)

如何results从asp.net mvc控制器返回计数....

asp.net-mvc controller class jsonresult

5
推荐指数
1
解决办法
1万
查看次数

将JSON对象作为参数传递给MVC控制器

我有以下任意JSON对象(字段名称可能会更改).

  {
    firstname: "Ted",
    lastname: "Smith",
    age: 34,
    married : true
  }
Run Code Online (Sandbox Code Playgroud)

-

public JsonResult GetData(??????????){
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以像JSON对象一样定义一个具有与参数相同的字段名称的类,但我希望我的控制器能够接受具有不同字段名称的任意JSON对象.

asp.net-mvc json jsonresult

5
推荐指数
1
解决办法
8032
查看次数

在 C# 中将 JsonResult 转换为不同的对象

所以我有一个名为的对象Balance,其中包含:

public class Balance
{
   string balance1;
   string balance2;
   string currency;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将JsonResult不同函数调用返回的对象解析为Balance.

我试过使用JsonConvert.Serializeand Deseralize<Balance>,但是,我尝试解析的对象每次都设置为 null (即balance1 = null等)

任何帮助将非常感激。

编辑:

下面是我试图解析的代码。此外,我意识到数据访问JsonResult在一个名为的值中Data并显示为Data: { balance1: "800" balance2: "800" currency: "CAD"}.

JsonResult result = admin.GetCompanyBalance(test.CustomerID, test.DevelopmentID); 
string json = JsonConvert.SerializeObject(result);
Balance br = new Balance();
br = JsonConvert.DeserializeObject<Balance>(json);
Run Code Online (Sandbox Code Playgroud)

c# json object jsonresult

5
推荐指数
2
解决办法
1万
查看次数

对某些继承的属性使用 JsonIgnore

我有一个像这样的基类-ish:

public class Baseclass
{
   public string Id { get; set; }
   public string Type { get; set; }
   public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...以及许多继承这些属性的类,例如:

   public class Thing: Baseclass
    {
     public string Size{ get; set; }
     public string Color{ get; set; }
     public string Smell{ get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

现在,我不想序列化所有这些属性 (mvc/jsonresult),所以我在要排除的类的属性上使用 [JsonIgnore],并且效果很好。问题是我也不想序列化一个类的所有继承属性。我四处询问并得到以下答案:

例如:我不想在 Thing 中序列化从 Baseclass 继承的 Id。

我应该在 Baseclass virutal 中创建 Id:

public virtual string Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

并将以下内容添加到 Thing 类:

[JsonIgnore]
public override …
Run Code Online (Sandbox Code Playgroud)

c# serialization json.net jsonresult

5
推荐指数
0
解决办法
3728
查看次数

MVC4剃刀在客户端javascript中从我的模型访问JsonResult数据

我正在从事MVC4剃须刀项目。我有一个角色对象列表,这些角色对象作为jsonResult存储在我的模型中,打算在我的客户端javascript中使用。

//Model
public JsonResult JsonRoles { get; set; }

//Controller
var myroles = from r in myroles select new { r.Id, r.Description };
var myModel.JsonRoles = Json(myroles);


//Client side javascript
var data = '@(Model.JsonRoles)';
alert(data);
Run Code Online (Sandbox Code Playgroud)

我试图在javascript中如下访问此文件。当我发出警报时,我总是得到字符串“ System.Web.Mvc.JsonResult”,但是我需要的是json数据。我究竟做错了什么?有人能指出我正确的方向吗

javascript json jsonresult asp.net-mvc-4

4
推荐指数
1
解决办法
9789
查看次数

如何在c#中读取JsonResult对象

我正在尝试反序列化我的 jsonresult 但收到以下错误消息:

“无法从 System.Web.Mvc.Result 转换为字符串”

这是我的 json 结果:

[{"description":"BANANA","quantity":"12","productPrice":"40000","discount":"","isTaxable":true,"finalPrice":"9999","lineItemTotal":"999","orderId":8},{"description":"APPLES","quantity":"20","productPrice":"860000","discount":"","isTaxable":false,"finalPrice":"12000","lineItemTotal":"10000","orderId":8}]
Run Code Online (Sandbox Code Playgroud)

这是我的控制器方法:

 [System.Web.Mvc.HttpPost]
        public JsonResult CreateLineItems(JsonResult data)
        {


           ResultDto dto = JsonConvert.DeserializeObject<ResultDto>(data);
            //for (int i = 0; i < data.Data; i++)
            //{
            //    
            //}

            return data;
        }
Run Code Online (Sandbox Code Playgroud)

这是我的 ResultDto 类:

public class ResultDto
    {

        public string description { get; set; }
        public string quantity { get; set; }
        public string productPrice { get; set; }
        public string discount { get; set; }
        public bool isTaxable { get; set; }
        public string …
Run Code Online (Sandbox Code Playgroud)

c# jsonresult

3
推荐指数
1
解决办法
6948
查看次数

调用返回JsonResult的操作的MVC Ajax.BeginForm在客户端上不成功

我正在尝试使用.Net的Ajax.BeginForm来提交表单并获取对象列表.

@using (Ajax.BeginForm("ValidateEmployee", new AjaxOptions { OnBegin = "onBegin", OnSuccess = "onSucess", UpdateTargetId = "results"} )
Run Code Online (Sandbox Code Playgroud)

问题是,当我的控制器返回一个JsonResult并将我返回的列表转换为json时,永远不会调用OnSuccess回调,并且不会更新我的id为"results"的div.但是调用onBegin回调.控制器看起来像这样.

public JsonResult ValidateEmployee(Employee emp)
{
    ...
    List<Role> roles = new Role();
    foreach(var x in myCollection)
    {
        roles.Add(new Role { ID = x.ID, Name = x.Name });
    }
    return Json(roles);
}
Run Code Online (Sandbox Code Playgroud)

我已经确认Json(roles)将列表正确转换为有效的json.但我无法使用它,因为onSuccess永远不会运行.

奇怪的是,如果我不列表转换成JSON,就回到它作为.NET名单,这两个回调是碰我的元素,更新输出System.Collections.Generic.List'1 [Models.Role.所以它不是json,我没有办法使用数据.

那么为什么当我从控制器返回一个json对象时没有调用onSuccess?

我正在使用MVC 3,我正在引用jquery.unobtrusive-ajax.js.

谢谢你的帮助.

ajax.beginform jsonresult asp.net-mvc-3

2
推荐指数
1
解决办法
4032
查看次数

如何设置JsonRequestBehavior.AllowGet与返回JsonResult

我将asp.net mvc actionmethod称为JsonResult作为返回类型,并返回至少具有50000 racords的数据列表,并希望设置Ajax返回的大小,并且它也完成了。

但是当我返回值时,会抛出一个错误:

This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.
Run Code Online (Sandbox Code Playgroud)

我的代码:

return new JsonResult()
            {
                Data = mydatalist,
                MaxJsonLength = Int32.MaxValue
            };
Run Code Online (Sandbox Code Playgroud)

在这里我想设置JsonRequestBehavior.AllowGet,但是在哪里以及如何不知道?

在事先感谢之前,任何人都可以这样做。

asp.net-mvc serialization json jsonresult json-deserialization

2
推荐指数
1
解决办法
2321
查看次数