2009-06-17 5 views
0

ASP.NET MVC 응용 프로그램에서 Linq를 SQL로 데이터 액세스 레이어로 사용합니다. 따라서 쿼리 결과는 강력한 형식의 개체입니다. 동적으로 페이지에 표시 할 필드를 지정할 수 있습니까? FIRSTNAME 성 주소 전화LINQ to SQL 필드 이름으로 값을 얻는 방법

하나 개의 사용자 싶지는 성과 FIRSTNAME을 보여 주면 내 질문은 :

예를 들어, 쿼리 결과에는 다음과 같은 필드가 있습니다. 두 번째 사용자는 주소 및 이름, 세 번째 등을 표시하고 싶습니다 ... 다른 사용자는 다른 요구 사항을 가지고 있습니다. 그렇다면 사용자의 특정 요구 사항 (요구시)을 기반으로 결과를 필터링하거나 데이터베이스에 어떻게 쿼리 할 수 ​​있습니까?


보다 구체적으로, 질의 결과는 사람 정보 세트이다.

public class Person 
{ 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
    public string Tel {get;set;} 
    public string Tel {get;set;} 
} 
+0

당신은 나에게 당신이 달성하려고하는 무엇을 더 나은 설명을 제공해야합니다. "사용자가 한 가지 다른 요구 사항을 기반으로 결과를 얻으시겠습니까?" –

답변

0

사용자 입력을 기반으로 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

솔루션을 제공해 주셔서 감사합니다. 약간의 서투른 것처럼 보이고 많은 필드와 다양한 조합이 있다면 어떨까요? – Smallville

1
1) 사용자는 사용자가 컨트롤러가이 해석)
2 참조하고자하는 어떤 결과 UI에 표시

저장이 컨트롤러는 DAL로 진행하고 DAL
4), 상기 제어기는 후 리턴 결과를 수정로부터 데이터를 취득
3) 나중에 든 2
5) 컨트롤러 다음에 수정 된 데이터를 전달에있어서 UI
6) UI는 데이터를 렌더링합니다

연결 해제가 4에서 시작하여 최대 6까지 확장 될 수 있다고 생각합니다.

실제로이 작업을 수행하는 데 수천 가지 방법이 있습니다. 놀랍게도 C# 유사 의사 코드로이를 수행하는 한 가지 방법이 있습니다.

먼저 사용자에게 표시 할 정보가 포함 된보기 모델을 만듭니다.

(약칭 함)는 SQL에

원래 Linq에 :

public class Person 
{ 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
    public string Tel {get;set;} 
} 

내보기 모델 :

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;} 
} 

모델로 준비 컨트롤러 방법 : 여기

[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/> 
    <% } %> 
<% } %> 
+0

안녕하세요, 답변 해 주셔서 감사합니다. 그러나 그것은 내가 찾고있는 것이 아닙니다.내 질문은 한 사용자가 성 및 성을 표시하려는 경우입니다. 두 번째 사용자는 주소와 이름, 세 번째 등을 표시하고 싶습니다 ... 다른 사용자는 다른 요구 사항을 가지고 있습니다. 그렇다면 사용자의 특정 요구 사항 (요구시)을 기반으로 결과를 필터링하거나 데이터베이스에 어떻게 쿼리 할 수 ​​있습니까? – Smallville

+0

내 대답은 모든 데이터를 가져온 다음 사용자의 환경 설정과 병합하고 적절히 표시하는 것이 었습니다. 나는 당신이 파이프 라인을 더 내려가는 것보다 필터링을 찾고 있다고 생각합니다. – Will