[英]How to return 1 value on JsonResult
I have a problem where I need to use JsonResult
but will return single value.. 我有一个需要使用
JsonResult
的问题,但将返回单个值。
May I ask is that possible and how should I use it in my Set of Codes 我想问一下这是可能的,我应该如何在我的代码集中使用它
I want to return the Address but I don't know if it is possible or not. 我想返回地址,但是我不知道是否可以。 .
。
public JsonResult LoadAddress()
{
Guid userId = (Guid)Membership.GetUser().ProviderUserKey;
if (User.IsInRole("Administrator"))
{
var address = (from a in db.Clients
join b in db.Client_Location
on a.ID equals b.ClientID
where a.userId == userId
&& a.LogicalDelete == false
select a).SingleOrDefault();
}
else if (User.IsInRole("Worker"))
{
var address = (from a in db.Workers
join b in db.Worker_Address
on a.ID equals b.WorkerID
where a.userId == userId &&
a.LogicalDelete == false
select a).SingleOrDefault();
}
else if (User.IsInRole("Employer"))
{
var address = (from a in db.Client_Customer
join b in db.Client_Customer_Location
on a.ID equals b.Client_CustomerID
where a.userId == userId
&& a.LogicalDelete == false
select a).SingleOrDefault();
}
return Json(address, JsonRequestBehavior.AllowGet);
}
Thank you in advance 先感谢您
public JsonResult LoadAddress()
{
Address address = null;
Guid userId = (Guid)Membership.GetUser().ProviderUserKey;
if (User.IsInRole("Administrator"))
{
address = (from a in db.Clients
join b in db.Client_Location
on a.ID equals b.ClientID
where a.userId == userId
&& a.LogicalDelete == false
select a).SingleOrDefault();
}
else if (User.IsInRole("Worker"))
{
address = (from a in db.Workers
join b in db.Worker_Address
on a.ID equals b.WorkerID
where a.userId == userId &&
a.LogicalDelete == false
select a).SingleOrDefault();
}
else if (User.IsInRole("Employer"))
{
address = (from a in db.Client_Customer
join b in db.Client_Customer_Location
on a.ID equals b.Client_CustomerID
where a.userId == userId
&& a.LogicalDelete == false
select a).SingleOrDefault();
}
return Json(address, JsonRequestBehavior.AllowGet);
}
assuming you have a common interface for all the different address types (ie Clients
, Workers
and Client_Customer
), you could do: 假设您对所有不同的地址类型(例如
Clients
, Workers
和Client_Customer
)都有一个公共接口,则可以执行以下操作:
public interface IAddress{
string Name{get;set;}
string Street {get; set;}
// etc
}
then, if all relevant address types implement the interface, you'd just do the following: 然后,如果所有相关的地址类型都实现了该接口,则只需执行以下操作:
IAddress address = null;
if (User.IsInRole("Administrator"))
{
address = (IAddress)(from a in db.Clients... etc)
}
else if (User.IsInRole("Worker"))
{
address = (IAddress)(from a in db.Workers... etc)
}
else if (User.IsInRole("Employer"))
{
address = (IAddress)(from a in db.Client_Customer... etc)
}
else
{
address = /// some other default that you want
}
return Json(address, JsonRequestBehavior.AllowGet);
[edit] - the typical implementation of this would look like, also, you'd need to cast your result as shown in the edit above (ie (IAddress)(etc)
): [edit] -它的典型实现也将需要像上面的编辑中
(IAddress)(etc)
结果(即(IAddress)(etc)
):
public class Client : IAddress {
public string Name{get;set;}
public string Street {get; set;}
// etc
/* now all your other unique properties*/
public string ClientName{get;set;}
}
public class Client_Customer : IAddress {
public string Name{get;set;}
public string Street {get; set;}
// etc
/* now all your other unique properties*/
public string AnotherName{get;set;}
}
public class Workers: IAddress {
public string Name{get;set;}
public string Street {get; set;}
// etc
/* now all your other unique properties*/
public string WorkerName{get;set;}
}
You can use ExpandoObject 您可以使用ExpandoObject
dynamic expando = new ExpandoObject();
if (User.IsInRole("Administrator"))
{
expando.address = ...
}
else if (User.IsInRole("Worker"))
{
expando.address = ...
}
else if (User.IsInRole("Employer"))
{
expando.address = ...
}
return Json(expando.address, JsonRequestBehavior.AllowGet);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.