드롭다운 목록 또는 드롭다운 목록 간의 차이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
'bestsource' 카테고리의 다른 글
스트리밍 대용량 파일이 ASP에 업로드됩니다.NET MVC (0) | 2023.09.16 |
---|---|
엔터티 유형 ApplicationUser가 현재 컨텍스트의 모델에 속하지 않습니다. (0) | 2023.09.16 |
서브라임 텍스트 2에서 열었을 때 XML 파일을 자동으로 들여쓰기 하는 방법은? (0) | 2023.09.11 |
cURL을 사용하여 HTTPS 사이트에 연결할 수 없습니다. 대신 0 길이의 컨텐츠를 반환합니다.어쩌죠? (0) | 2023.09.11 |
SQL 트랜잭션 오류:현재 트랜잭션을 커밋할 수 없으며 로그 파일에 쓰는 작업을 지원할 수 없습니다. (0) | 2023.09.11 |