Html.DropDownListFor의 선택된 값을 어떻게 설정할 수 있습니까? 온라인에서 살펴본 결과 아래와 같이 네 번째 매개 변수를 사용하여 달성 할 수 있음을 확인했습니다.
@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country")
내 선택 목록은 다음과 같이 표시됩니다.
<select id="ShipFromCountries" name="ShipFromCountries">
<option value="">Please select a country</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
...
</select>
그러나 어떤 이유로 영국이 선택된 상태로 유지되지만 “국가를 선택하십시오”를 선택하고 싶습니다.
누구든지 내가 이것을 어떻게 할 수 있는지 알고 있습니까?
편집하다
기능에 약간의 변경이 있었지만 여전히이 문제가 발생하는 것처럼 보이기 때문에 코드를 업데이트했습니다. 이것이 내 견해입니다.
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
1
option
내가 원하는 이드의 선택, 나도 그 텍스트로 시도했지만 option
작동하지 않습니다.
어떤 아이디어?
답변
코드에는 몇 가지 개념적 문제가 있습니다.
첫째 ,
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
DropDownListFor를 사용할 때 첫 번째 매개 변수는 양식을 제출 한 후 선택한 값이 저장되는 속성입니다. 따라서 귀하의 경우 SelectedOrderId
다음과 같이 사용하려면 모델의 일부 또는 이와 유사한 것을 가져야합니다 .
@Html.DropDownListFor(n => n.SelectedOrderId, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
둘째 ,
ViewBag를 사용하는 것 외에는 잘못된 것은 아니지만 더 나은 방법이 있습니다 (대신 ViewModel에 해당 정보를 넣음). SelectList를 보유하고있는 ViewBag 속성이 선택한 값 을 입력 한 속성의 이름과 동일 합니다. 이를 방지하려면 항목 목록을 포함하는 속성의 이름을 지정할 때 다른 이름을 사용하십시오.
이 문제를 피하고 더 나은 MVC 코드를 작성하려면 내가 사용할 코드 :
뷰 모델 :
public class MyViewModel{
public int SelectedOrderId {get; set;}
public SelectList OrderTemplates {get; set;}
// Other properties you need in your view
}
제어 장치:
public ActionResult MyAction(){
var model = new MyViewModel();
model.OrderTemplates = new SelectList(db.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1);
//Other initialization code
return View(model);
}
보기에서 :
@Html.DropDownListFor(n => n.SelectedOrderId, Model.OrderTemplates, "Please select an order template")
답변
나를 위해 일하지 않았으므로 이렇게 일했습니다.
제어 장치:
int selectedId = 1;
ViewBag.ItemsSelect = new SelectList(db.Items, "ItemId", "ItemName",selectedId);
전망:
@Html.DropDownListFor(m => m.ItemId,(SelectList)ViewBag.ItemsSelect)
JQuery :
$("document").ready(function () {
$('#ItemId').val('@Model.ItemId');
});
답변
다음과 같은 객체를 전달할 때 :
new SelectList(Model, "Code", "Name", 0)
소스 ( Model
) 및 키 ( "Code"
) 텍스트 ( "Name"
) 및 선택한 값 0
. 속성 0
에 대한 소스에 값 이 없을 수 Code
있으므로 HTML 도우미는 첫 번째 요소를 선택하여 실제 selectedValue를이 컨트롤에 전달합니다.
답변
할당하기 전에 선택한 값을 잘라 냈는지 확인하십시오.
//모델
public class SelectType
{
public string Text { get; set; }
public string Value { get; set; }
}
//제어 장치
var types = new List<SelectType>();
types.Add(new SelectType() { Value = 0, Text = "Select a Type" });
types.Add(new SelectType() { Value = 1, Text = "Family Trust" });
types.Add(new SelectType() { Value = 2, Text = "Unit Trust"});
ViewBag.PartialTypes = types;
//전망
@Html.DropDownListFor(m => m.PartialType, new SelectList(ViewBag.PartialTypes, "Value", "Text"), new { id = "Type" })
답변
뷰에 무엇이 있을지 알고 있다면 컨트롤러에서 기본값을 설정 한 다음 view / cshtml 파일에 설정할 수도 있습니다.
HTML 측에서 기본값을 설정할 필요가 없습니다.
컨트롤러 파일에서.
commission.TypeofCommission = 1;
return View(commission);
.cshtml 파일에서.
@Html.DropDownListFor(row => row.TypeofCommission, new SelectList(Model.commissionTypeModelList, "type", "typeName"), "--Select--")
답변
수업을 잊어야합니다
선택 목록
컨트롤러 에서 이것을 사용하십시오 .
var customerTypes = new[]
{
new SelectListItem(){Value = "all", Text= "All"},
new SelectListItem(){Value = "business", Text= "Business"},
new SelectListItem(){Value = "private", Text= "Private"},
};
값을 선택하십시오.
var selectedCustomerType = customerTypes.FirstOrDefault(d => d.Value == "private");
if (selectedCustomerType != null)
selectedCustomerType.Selected = true;
ViewData에 목록을 추가합니다.
ViewBag.CustomerTypes = customerTypes;
보기 에서 사용 :
@Html.DropDownList("SectionType", (SelectListItem[])ViewBag.CustomerTypes)
–
답변
컨트롤러 섹션 추가
ViewBag.Orders= new SelectList(db.Orders, "Id", "business", paramid);
Html 섹션 추가
@Html.DropDownList("Orders", null)
간단한 방법