2

したがって、displaytemplate に次のコードがあります。

@Html.DropDownListFor(blah => blah.InputtedData, ddv)

実際のドロップダウンリストを取得します。私はこのコードを試しました:

@Html.DisplayFor(blah => blah.InputtedData, ddv)

そして、1(ナンバーワン)、selectedvalue を取得します。しかし、選択したテキストを表示したいYes。では、selectedvalue ではなく、displaytemplate のドロップダウンリストに selectedtext を表示するにはどうすればよいでしょうか。

リクエストごと:

namespace TESTMVC.ViewModels
{
    public class CtrlInputDataModel
    {
        public CtrlTypeModel RowCtrl { get; set; }
        public long InputtedDataID { get; set; }
        public string InputtedData { get; set; }
        public DateTime InputtedDate { get; set; }

        public CtrlInputDataModel()
        {

        }

        public CtrlInputDataModel (CtrlTypeModel newRowCtrl, long newInputtedDataID, string newInputtedData, DateTime newInputtedDate)
        {
            RowCtrl = newRowCtrl;
            InputtedDataID = newInputtedDataID;
            InputtedData = newInputtedData;
            InputtedDate = newInputtedDate;
        }
    }
}

ddv以下に基づくViewModel :

namespace TESTMVC.ViewModels
{
    public class DefaultValueModel
    {
        public string Label { get; set; }
        public string Value { get; set; }

        public DefaultValueModel()
        {

        }

        public DefaultValueModel(string newLabel, string newValue)
        {
            Label = newLabel;
            Value = newValue;
        }
    }
}
4

1 に答える 1

4

ビルトインではできませんHtml.DisplayFor/Views/Shared/DisplayTemplates/DropdownListTest.cshtmlただし、プロパティに基づいてドロップダウンリストの値からテキストを手動で選択するなど、カスタムの表示テンプレートを作成できます。

@model string
@((IEnumerable<SelectListItem>)ViewData["ddv"])
    .Where(s => Model == s.Value)
    .Select(s => s.Text).SingleOrDefault()

次に、次の (少し複雑な) 構文で使用できます。

@Html.DisplayFor(blah => blah.InputtedData, 
     "DropdownListTest", //template name
     new { ddv = ddv } // aditional view data: the property name needs to be ddv
})

ただし、この機能を再利用する予定がない場合は、ロジックをインライン化し、代わりにこれを使用しますHtml.DisplayFor

@ddv.Where(s => s.Value == Model.InputtedData)
    .Select(s => s.Text).SingleOrDefault()
于 2012-09-24T19:09:56.877 に答える