bestsource

드롭다운 목록 또는 드롭다운 목록 간의 차이Html 도우미

bestsource 2023. 9. 16. 09:31
반응형

드롭다운 목록 또는 드롭다운 목록 간의 차이Html 도우미

그 두 도우미의 차이점에 대한 설명을 찾지 못한 것이 이상한 것 같아요. 그래서 저는 그것이 분명하다고 생각하는데 저는 놓쳤습니다.

기본적으로 다음과 같은 간단한 모델을 사용하여 케이스에 사용할 것인지 결정하려고 합니다.

public class Booking
    {
        public int ID { get; set; }
        public Room Room { get; set; }
        public DateTime StartTime { get; set; }
        public DateTime EndTime { get; set; }
        public ICollection<Equipment> Equipments { get; set; }
        public string Who { get; set; }
    }

그리고 예약 기록 추가 및 편집을 위한 간단한 룸 드롭다운 목록을 표시하고 싶습니다.

구글에서 여러 번 검색을 해보니 DropDopwListFor가 필요한 것 같은데 왜, 어떻게 해야 하는지 잘 모르겠습니다.

다음 두 가지 예를 들어보겠습니다.

@Html.DropDownListFor(
    x => x.EquipmentId, 
    new SelectList(Model.Equipments, "Id", "Text")
)

그리고:

@Html.DropDownList(
    "EquipmentId", 
    new SelectList(Model.Equipments, "Id", "Text")
)

두 번째 예제에서는 드롭다운을 바인딩할 속성의 이름이 마법 문자열로 하드코딩되어 있습니다.즉, 모델을 리팩터하고 이 속성의 이름을 변경하기로 결정한 경우 사용할 수 있는 툴링 지원부에서는 이 변경 사항을 감지하고 잠재적으로 많은 보기에서 하드코딩한 매직 문자열을 자동으로 수정할 방법이 없습니다.따라서 이 약하게 입력된 도우미가 사용되는 모든 곳을 수동으로 검색하고 교체해야 합니다.

반면 첫 번째 예제에서는 주어진 모델 특성에 연결된 강력한 형식의 람다 식을 사용하고 있으므로 코드를 재팩터링하기로 결정한 경우 도구가 사용되는 모든 곳에서 자동으로 이름을 변경할 수 있습니다.또한 뷰를 미리 컴파일하기로 결정한 경우 수정해야 하는 뷰를 가리키는 컴파일러 시간 오류가 즉시 발생합니다.두 번째 예를 사용하면 사이트의 사용자(이상적인 경우) 또는 사용자(최악의 경우 시나리오)가 이 특정 보기를 방문할 때 런타임 오류가 발생합니다.

ASP에는 강력한 유형의 도우미가 처음 도입되었습니다.NET MVC 2와 마지막으로 약하게 타이핑된 도우미를 사용한 것은 ASP에서였습니다.오래전 NET MVC 1 응용 프로그램.

DropDownListFor는 지정된 속성을 사용하여 선택된 값을 자동으로 선택합니다.

// Will select the item in model.Equipments that matches Model.EquipmentId
@Html.DropdownListFor(m => m.EquipmentId, Model.Equipments); 

다른 의견:

없어요ICollection<Equipment> Equipments당신의 견해 모델로.다음을 반환하는 속성이 있어야 합니다.IEnumerable<SelectListItem>.

보기를 추가하려는 경우(aspx파일) 여기에DropDownList아니면DropDownListFor안쪽으로 들어가 오른쪽 클릭-> 보기 추가 후 "Create a strong typed view"를 선택한 다음 목록에서 선택합니다.Booking클래스. 그런 다음 이 페이지를 추가합니다.

다음과 같이 적을 수 있습니다.

@Html.DropdownListFor(m => m.Equipments , Model.Equipments);

왜냐하면 우리는 강력하게 타이핑된 뷰를 추가하기 때문입니다.Booking, 다음을 가질 수 있습니다.

m => m.ID, m => m.Room, m => m.StartTime

...기타.

서비스에서는 데이터베이스에서 데이터를 가져온 다음 컨트롤러에서 이 서비스의 방법을 사용하여 데이터베이스에서 보기로 데이터를 전달할 수 있습니다.능을 사용할 수 .ViewData컨트롤러에 저장할 수 있습니다.

ViewData["Equipments"] = new servicename().getdatalistfromdatabase().AsEnumarable();

퍼팅 AsEnumarable()끝서온의의서다t다을t서서온의의netsefmIEnumarable.

그러면 사용자가 보기에 다음을 가질 수도 있습니다.

@Html.DropdownList("MyEquipments" , ViewData["Equipments"]);

ViewData 사용량 링크: http://msdn.microsoft.com/en-us/library/dd410596.aspx

도움이 되길 바랍니다.

DropdownListFor 및 name assigned 합니다. s support strong type이며 lambda Expression한로가면일다간를서다를간s일t면f가eeyre

DropdownList이를 지지하지 않습니다.

언급URL : https://stackoverflow.com/questions/8182280/difference-between-dropdownlist-or-dropdownlistfor-html-helper

반응형