Asp.net mvc LINQ到SQL如何通过字段名获取值
我在ASP.NETMVC应用程序中使用LINQtoSQL作为数据访问层。因此,查询结果是强类型对象。如何动态指定要在页面中显示的字段 例如,查询结果包含以下字段: 名字 姓氏 地址 电话 我的问题是,如果一个用户想要显示Lastname和Firstname。第二个用户想要显示地址和名字,第三个等等。。。不同的用户有不同的要求。那么,如何根据用户的特定需求(按需)查询数据库/过滤结果呢Asp.net mvc LINQ到SQL如何通过字段名获取值,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,我在ASP.NETMVC应用程序中使用LINQtoSQL作为数据访问层。因此,查询结果是强类型对象。如何动态指定要在页面中显示的字段 例如,查询结果包含以下字段: 名字 姓氏 地址 电话 我的问题是,如果一个用户想要显示Lastname和Firstname。第二个用户想要显示地址和名字,第三个等等。。。不同的用户有不同的要求。那么,如何根据用户的特定需求(按需)查询数据库/过滤结果呢 更具体地说,查询结果是一组人员信息 public class Person { public string
更具体地说,查询结果是一组人员信息
public class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
public string Tel {get;set;}
public string Tel {get;set;}
}
根据用户输入使用if语句。我假设您将用户的首选项存储在某个位置,在这种情况下,以下代码将起作用:
if (showAddress)
{
var results = from u in Users
select new
{
FirstName = u.FirstName;
LastName = u.LastName;
Address= u.Address;
}
// Code to display results goes here
}
else
{
var results = from u in Users
select new
{
FirstName = u.FirstName;
LastName = u.LastName;
}
// Code to display results goes here
}
1) 用户在UI中指示用户希望看到的结果2) 控制器对此进行解释并将其存储以备将来使用
3) 控制器转到DAL并从DAL获取数据
4) 然后,控制器根据#2
5) 然后,控制器将修改后的数据传递给UI
6) UI呈现数据 我想你的断开从4点开始,可能会延伸到6点 事实上,有成千上万的方法可以做到这一点。这里有一种方法可以在类似C的伪代码中实现 首先,我将创建一个视图模型,其中包含有关我要向用户显示的内容的信息 原始Linq到Sql(缩写): 我的视图模型:
public partial class PeopleView
{
public bool ShowFirstName {get;set;}
public bool ShowLastName {get;set;}
public bool ShowTel {get;set;}
public IEnumerable<Person> People {get;set;}
}
以下是观点:
<% foreach(var item in ViewData.Model.People){ %>
<% if(ViewData.Model.ShowFirstName) {%>
<%= item.FirstName %><br/>
<% } %>
<% if(ViewData.Model.ShowLastName) {%>
<%= item.LasttName %><br/>
<% } %>
<% if(ViewData.Model.ShowTel) {%>
<%= item.Tel %><br/>
<% } %>
<% } %>
查看System.Linq.Dynamic:
你需要给我一个更好的解释,说明你想要实现的目标。您所说的“根据用户的不同需求获取结果”是什么意思?感谢您提供的解决方案。但这似乎有点笨拙,如果有许多字段和许多不同的组合呢?嗨,威尔,谢谢你的回答。但这不是我要找的。我的问题是,如果一个用户想要显示lastname和firstname。第二个用户想要显示地址和名字,第三个等。。。不同的用户有不同的要求。那么,我如何根据用户的特定需求(按需)查询数据库/过滤结果呢?我的答案是获取所有数据,然后将其与用户的首选项合并并适当显示。我猜你是在寻找更深层的过滤。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult PersonDetails(bool showFirstName,
bool showLastName, bool showTel)
{
var viewData = new PeopleView()
{
ShowFirstName = showFirstname,
ShowLastName = showLastName,
ShowTel = showTel,
People = Dal.GetPeople()
};
return View(viewData);
}
<% foreach(var item in ViewData.Model.People){ %>
<% if(ViewData.Model.ShowFirstName) {%>
<%= item.FirstName %><br/>
<% } %>
<% if(ViewData.Model.ShowLastName) {%>
<%= item.LasttName %><br/>
<% } %>
<% if(ViewData.Model.ShowTel) {%>
<%= item.Tel %><br/>
<% } %>
<% } %>