我正在使用MVC3,Razor视图引擎,使用工作单元的存储库模式构建应用程序,并使用EF4.1 Code First来定义我的数据模型.
这里有一些背景(如果你想要的话就会有光泽).
应用程序本身只是一个Intranet"菜单".
2个主要实体是MenuItem和Department,其中:
这就是我定义我的实体的方式
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
我正在使用每个租户模型一个数据库编写多租户应用程序.我允许每个用户帐户访问多个租户(只要该租户已授予他们访问权限)
发送到浏览器的每个页面都包含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方法(其中有很多)?
是否有可能使用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控制器返回计数....
我有以下任意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对象.
所以我有一个名为的对象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) 我有一个像这样的基类-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) 我正在从事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数据。我究竟做错了什么?有人能指出我正确的方向吗
我正在尝试反序列化我的 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) 我正在尝试使用.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.
谢谢你的帮助.
我将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
jsonresult ×10
asp.net-mvc ×4
c# ×4
json ×4
json.net ×2
ajax ×1
class ×1
controller ×1
javascript ×1
multi-tenant ×1
object ×1