MVC에서 HtmlHelpers를 사용하여 매우 유용한 기능을 제공하며 이제는 드롭 다운을 만들려고합니다. 모델을 전달할 때 어떤 것을 기반으로합니다. 속성은 값과 텍스트의 동일 속성입니다.사용자 지정 HtmlHelper를 사용하여 모델에서 ASP.NET MVC 사용자 지정 드롭 다운
그래서 나는이 같은 있습니다
public static MvcHtmlString DataFilledDropDown<T>(this HtmlHelper h, string name, T selectedValue)
{
var myModel = typeof(T);
var dropDownBox = new Tag("select").With("name", name).And("id", name);
foreach (T val in Enum.GetValues(myModel))
{
var itemText = Resources.ResourceManager.GetString(val.ToString());
if (String.IsNullOrEmpty(itemText)) itemText = val.ToString();
var dft = new Tag("option")
.With("value", "0")
.AndIf(val.Equals(selectedValue), "selected", "selected")
.WithText("-- CHOOSE --");
dropDownBox.Append(dft);
var option = new Tag("option")
.With("value", (val).ToString())
.AndIf(val.Equals(selectedValue), "selected", "selected")
.WithText(itemText);
dropDownBox.Append(option);
}
return MvcHtmlString.Create(dropDownBox.ToString());
}
을하지만 이것은 단지 하나의 필드에 저를 포함 것이다 그러나 나의 모델은 다음과 같이 될 수있다 :
그래서 다음 만들려는 이상과public class TestModel{
public int Id {get; set; } // this i want as a value in dropdown
public string Name {get;set;} // this i want to be the text value in dropdown
public bool isActive { get; set; } // this i dont need in dropdown but have data in model
}
Html.DataFilledDropDown<myModel>("TestDropdown","Id","Name","0")
여기서 입력은 드롭 다운의 이름, 값 p의 이름입니다.
public static MvcHtmlString DataFilledDropDown<T>(
this HtmlHelper h, string name, IEnumerable<T> items,
Func<T,string> valueField, Func<T,string> textField, string selectedValue)
{
var dropDownBox = new Tag("select").With("name", name).And("id", name);
var defaultValue = "0";
var dft = new Tag("option")
.With("value", "0")
.AndIf(defaultValue.Equals(selectedValue), "selected", "selected")
.WithText("-- CHOOSE --");
dropDownBox.Append(dft);
foreach (var item in items)
{
var myValue = valueField(item);
var myName = textField(item);
var option = new Tag("option")
.With("value", myValue)
.AndIf(myValue.Equals(selectedValue), "selected", "selected")
.WithText(myName);
dropDownBox.Append(option);
}
return MvcHtmlString.Create(dropDownBox.ToString());
}
하고 코드를 실행 : roperty, 텍스트 속성과 나는 아래의 대답에서 약간의 도움이 완료
기본 선택 값의 이름은이에 관심있는 사람들을위한 코드입니다
<%: Html.DataFilledDropDown("SpexOptionType", Model.Clubs, x => x.clubID.ToString(), x => x.clubName, "0")%>
그게 전부
많은 감사
당신이 대답을 받아 들여야한다. –
'태그'클래스의 코드를 게시 할 수 있습니까? 도서관에서 온거야? 감사합니다 – SzilardD
"태그"개체가 존재하지 않는다고 생각합니다 - 확실히 MVC3 내에 존재하지 않습니다 ..... –