2011-10-22 2 views
0

일부 목록에는 사용자 및 시스템 값이있는 MVC 웹 사이트에서 작업하고 있습니다. 따라서 시스템 항목은 사용자 언어로 표시하기 위해 국제화되어야하며 사용자 항목은 이미 사용자 언어로 표시됩니다.면도기를 사용하여 DropDownList 항목을 국제화하는 방법

이러한 시스템 항목에는 국제화해야하는 항목을 구분하기 위해 "IsSystem"플래그가 있습니다. 이 플래그는 사용자가 해당 항목을 업데이트하거나 삭제할 수 없음을 의미합니다.

글쎄, 우리는 그래서는 if 선언문 IsSystem 플래그를 확인하고 점점을 배치하기 위해 ... 드롭 다운리스트 로딩 로직의 중간 단계 방법을 찾을 수없는 ...이 DropDownList로 렌더링하는 @Html.DropDownList를 사용하는 리소스 파일의 올바른 텍스트 이 문제를 처리하는 방법에 대한 아이디어

감사합니다 ...

편집 :

컨트롤러 코드 : db는 EntityFramework

에서 컨텍스트가

ViewBag.idTaskType = new SelectList(db.TaskTypes, "idTaskType", "Name");

입니다

보기 코드 :

@Html.DropDownList("idTaskType", String.Empty) 
+0

DropDownList 데이터를 채우는 코드를 게시하십시오. – Marc

답변

2

을 내가

[1] 엔 -

idTaskType Name 
---------- ----- 
1   Task1 
2   Task2 
3   Task3 

우리가 두 개의 서로 다른 "App_GlobalResources"를 생각해 보자 아래로 "TaskTypes"테이블을 상상하고 US

Name Value 
---- ----- 
Task1 Create 
Task2 Update 
Task3 Delete 

[1] SV

Name Value 
---- ----- 
Task1 Skapa 
Task2 Uppdatera 
Task3 Ta bort 

이제 마지막으로

@Html.DropDownList("idTaskType", new SelectList(Model.TaskTypeList, "Value", "Text"), String.Empty) 

감사를 사용하십시오 IEnumerable을 SelectListItem

public IEnumerable<SelectListItem> TaskTypeList { 
     get{ 
      List<TaskTypes> List = db.TaskTypes.ToList(); 
      return List.Distinct().OrderBy(x => x.Name).Select(x => new SelectListItem 
        { 
         Value = x.idTaskType.ToString(), 
         Text = (HttpContext.GetGlobalResourceObject("Task", x.Name)).ToString() 
        }); 
     } 
    } 

을 개발한다.

0

당신은 당신의 데이터의 버전을 국제화 한 필요가있다. 그래서, 당신이 뭔가를 할 수 있습니다 :

ViewBag.idTaskType = new SelectList(db.TaskTypes 
    .Where(x => x.language == "en"), "idTaskType", "Name"); 
+0

IsSystem 플래그가 true 인 TaskTypes 만 번역하면됩니다 ... 다른 값은 사용자가 입력 할 때 남아 있어야합니다. 하지만 LINQ 로직을 추가해야한다고 생각합니다. – Romias

+0

@Romias - 나는 당신이 의미하는 것을 이해하지 못합니다. 그냥 linq 쿼리에 isSystem 검사를 추가하십시오. –

+0

데이터베이스에 번역이 없습니다 ... TaskType 테이블에는 "Name"과 "IsSystem"만 있습니다. TaskType이 사용자에 의해 소유되면 이름은 동일하게 유지되어야하지만 TaskType이 (시스템 소유) buildin 인 경우 Name 속성은 리소스 파일에서 오는 변환으로 바꿔야합니다. – Romias

관련 문제