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 roperty、textプロパティの名前とデフォルトの選択値
私はこれが興味を持つ人のためのコードで、以下の答えから少し助けを借りて、これを完了した:
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());
}
とコードを実行するには
<%: Html.DataFilledDropDown("SpexOptionType", Model.Clubs, x => x.clubID.ToString(), x => x.clubName, "0")%>
のthatsそれ
多くのおかげで
それはあなたの問題を解決するために十分であった場合は、答えを受け入れる必要があります。 –
'タグ'クラスのコードを投稿できますか?それは図書館からですか?ありがとう – SzilardD
私は "タグ"オブジェクトが存在するとは思わない - それは確かにMVC3内に存在しません..... –