0

さまざまな通貨のドロップダウンリストを作成するための次のクラスとエディターのテンプレートがあります。

public class Currency
{
    public string CurrencyId { get; set; }
    public string CurrencyName { get; set; }
}

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<morkyc.Core.Model.Currency>>" %>

<tr>
    <td style="width:50%;">
    <label class="fieldLabel">
    Specify Currency :
    </label>
    </td>
    <td>
        <%= Html.DropDownListFor(model => model, new SelectList(Model, "CurrencyId", "CurrencyName", ))%>
     </td>
</tr>

コントローラでリストを作成します

 List<Currency> lCurrencyList = new List<Currency>(new Currency[]
        {
            new Currency{CurrencyId = "AED", CurrencyName = "United Arab Emirates Dirham (AED)"}, 
            new Currency{CurrencyId = "AFN", CurrencyName = "Afghan Afghani (AFN)"}, 
            new Currency{CurrencyId = "ALL", CurrencyName = "Albanian Lek (ALL)"}, 
            new Currency{CurrencyId = "AMD", CurrencyName = "Armenian Dram (AMD)"}, 
            new Currency{CurrencyId = "ANG", CurrencyName = "Netherlands Antillean Guilder (ANG)"},
            new Currency{CurrencyId = "AOA", CurrencyName = "Angolan Kwanza (AOA)"},
            new Currency{CurrencyId = "ARS", CurrencyName = "Argentine Peso (ARS)"}, 
            new Currency{CurrencyId = "AUD", CurrencyName = "Australian Dollar (AUD)"}, 
            new Currency{CurrencyId = "AWG", CurrencyName = "Aruban Florin (AWG)"}, 
            new Currency{CurrencyId = "AZN", CurrencyName = "Azerbaijani Manat (AZN)"}, 
            new Currency{CurrencyId = "BAM", CurrencyName = "Bosnia-Herzegovina Convertible Mark (BAM)"}, 
            new Currency{CurrencyId = "BBD", CurrencyName = "Barbados Dollar (BBD)"}, 
            new Currency{CurrencyId = "BDT", CurrencyName = "Bangladeshi Taka (BDT)"}, 
            new Currency{CurrencyId = "BGN", CurrencyName = "Bulgarian Lev (BGN)"},
new Currency{CurrencyId = "ZWD", CurrencyName = "Zimbabwe Dollar (ZWD)"}
        });

私のビューでは、次のビューを呼び出してドロップダウンリストを作成します

<%= Html.EditorFor(model => model.Currency)%>

これは完全に正常に機能しています。

誰かがデフォルトで選択されたアイテムを設定する方法について提案できますか?

4

1 に答える 1

1

エディターテンプレートは、通貨リストに強く入力されています。DropDownListForまた、最初の引数としてリストをヘルパーに渡していますが、これは良くありません。選択した値を渡すことは決してないので、このエディターテンプレートでできる最善のことは、たとえば、値をこのリストの最初の要素に設定することです。

<%= Html.DropDownListFor(
    model => model, 
    new SelectList(Model, "CurrencyId", "CurrencyName", "AED")
)%>

しかし、私はあなたがこの値を動的に渡したいと思います。だから私はあなたのビューモデルを少し変更します:

public class CurrencyViewModel
{
    public string SelectedCurrency { get; set; }
    public IEnumerable<SelectListItem> Currencies { get; set; }
}

次に、次のエディターテンプレートを用意します。

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<CurrencyViewModel>" %>

<tr>
    <td style="width:50%;">
        <label class="fieldLabel">
            Specify Currency :
        </label>
    </td>
    <td>
        <%= Html.DropDownListFor(
            model => model.SelectedCurrency, 
            new SelectList(Model.Currencies, "Value", "Text")
        )%>
     </td>
</tr>

そして今あなたのコントローラーで:

public ActionResult Foo()
{
    var model = new CurrencyViewModel
    {
        // Define the selected value here
        SelectedCurrency = "AED",
        Currencies = new[]
        {
            new SelectListItem { Value = "AED", Text = "United Arab Emirates Dirham (AED)" }, 
            new SelectListItem{ Value = "AFN", Text = "Afghan Afghani (AFN)"}, 
            ...
        }
    };
    return View(model);
}

最後に、ビューでカスタムエディタテンプレートを呼び出します。

<%= Html.EditorForModel() %>
于 2011-05-22T09:13:57.447 に答える