Html.DropdownListFor 선택된 값이 설정되지 않음
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"},
};
Select the value:
var selectedCustomerType = customerTypes.FirstOrDefault(d => d.Value == "private");
if (selectedCustomerType != null)
selectedCustomerType.Selected = true;
Add the list to the ViewData:
ViewBag.CustomerTypes = customerTypes;
Use this in your View:
@Html.DropDownList("SectionType", (SelectListItem[])ViewBag.CustomerTypes)
-
More information at: http://www.asp.net/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc
Add the Controller Section
ViewBag.Orders= new SelectList(db.Orders, "Id", "business", paramid);
Add the Html Section
@Html.DropDownList("Orders", null)
A simple method
For me general solution :)
@{
var selectedCity = Model.Cities.Where(k => k.Id == Model.Addres.CityId).FirstOrDefault();
if (selectedCity != null)
{
@Html.DropDownListFor(model => model.Addres.CityId, new SelectList(Model.Cities, "Id", "Name", selectedCity.Id), new { @class = "form-control" })
}
else
{
@Html.DropDownListFor(model => model.Cities, new SelectList(Model.Cities, "Id", "Name", "1"), new { @class = "form-control" })
}
}
Linq to Dropdown with empty item, selected item (works 100%)
(Strongly Typed,Chances for error minimum) Any model changes will be reflected in the binding
Controller
public ActionResult ManageSurveyGroup()
{
tbl_Survey sur = new tbl_Survey();
sur.Survey_Est = "3";
return View(sur);
}
View
@{
//Step One : Getting all the list
var CompEstdList = (from ComType in db.tbl_CompEstdt orderby ComType.Comp_EstdYr select ComType).ToList();
//Step Two : Adding a no Value item **
CompEstdList.Insert(0, new eDurar.Models.tbl_CompEstdt { Comp_Estdid = 0, Comp_EstdYr = "--Select Company Type--" });
//Step Three : Setting selected Value if value is present
var selListEstd= CompEstdList.Select(s => new SelectListItem { Text = s.Comp_EstdYr, Value = s.Comp_Estdid.ToString() });
}
@Html.DropDownListFor(model => model.Survey_Est, selListEstd)
@Html.ValidationMessageFor(model => model.Survey_Est)
This method for binding data also possible
var selList = CompTypeList.Select(s => new SelectListItem { Text = s.CompTyp_Name, Value = s.CompTyp_Id.ToString(), Selected = s.CompTyp_Id == 3 ? true : false });
I know this is not really an answer to the question, but I was looking for a way to initialize the DropDownList from a list on the fly in the view when I kept stumbling upon this post.
My mistake was that I tried to create a SelectList from dictionary like this:
//wrong!
@Html.DropDownListFor(m => m.Locality, new SelectList(new Dictionary<string, string>() { { Model.Locality, Model.Locality_text } }, Model.Locality, ...
I then went digging in the official msdn doc, and found that DropDownListFor
doesn't necessarily require a SelectList
, but rather an IEnumerable<SelectListItem>
:
//right
@Html.DropDownListFor(m => m.Locality, new List<SelectListItem>() { new SelectListItem() { Value = Model.Locality, Text = Model.Locality_text, Selected = true } }, Model.Locality, new { @class = "form-control select2ddl" })
In my case I can probably also omit the Model.Locality
as selected item, since its a) the only item and b) it already says it in the SelectListItem.Selected
property.
Just in case you're wondering, the datasource is an AJAX page, that gets dynamically loaded using the SelectWoo/Select2 control.
public byte UserType
public string SelectUserType
You need to get one and set different one. Selected value can not be the same item that you are about to set.
@Html.DropDownListFor(p => p.SelectUserType, new SelectList(~~UserTypeNames, "Key", "Value",UserType))
I use Enum dictionary for my list, that's why there is "key", "value" pair.
I had a similar issue, I was using the ViewBag and Element name as same. (Typing mistake)
참고URL : https://stackoverflow.com/questions/19476530/html-dropdownlistfor-selected-value-not-being-set
'programing tip' 카테고리의 다른 글
오류 : RPC가 실패했습니다. (0) | 2020.09.03 |
---|---|
CSS 역할 스타일을 지정하는 방법 (0) | 2020.09.03 |
브라우저에서, 가급적 셀레늄을 사용하여 extjs 코드를 테스트하기위한 제안이 있습니까? (0) | 2020.09.03 |
어떤 컴퓨터 과학 개념을 알아야합니까? (0) | 2020.09.03 |
Android 카메라 의도 (0) | 2020.09.03 |