2

サインアップフォームがあります。ユーザーがhtmlの選択リストを使用してペットの種族を選択できるようにしたい. そこで、Html.DropDownListFor() Html ヘルパーを使用することにしました。

私のモデルでは:

public class PetModel
{
    public long id { get; set; }
    public short gender { get; set; }
    public short type { get; set; }
    public string name { get; set; }
    public int raceID { get; set; }
    public int birthYear { get; set; }
    public int weight { get; set; }
    public bool neutered { get; set; }

    public IEnumerable<SelectListItem> raceList { get; set; }
}

そして、ユーザーがペットの種族を選択できる raceList のドロップダウン リストを作成したいと考えています。

だから私は部分的なビューのためのコントローラを作成しました

public PartialViewResult _SignupPet(PetModel model)
{
    model.raceList = entity.PetRaces.Select(w => new SelectListItem { Text = w.name, Value = w.id.ToString() });

    return PartialView(model);
}

そして私の見解では:

@Html.DropDownListFor(m=>m.raceID, Model.raceList)

しかし、私はこのエラーを受け取っています。

LINQ to Entities はメソッド 'System.String ToString()' メソッドを認識せず、このメソッドはストア式に変換できません。

今、私はこれについて疑問に思っています。私は通常、ドロップダウン リストを使用して ID を選択し、ユーザーに ID の代わりにテキストを表示します。プロジェクトでこの Html.DropDownListFor() ヘルパーを使用するにはどうすればよいですか。私は間違ったアプローチを使用していますか?

4

2 に答える 2

1

元の問題を解決できませんでしたが、別の解決策を見つけました。私のコントローラーでコードを変更しました

model.raceList = entity.PetRaces.Select(w => new SelectListItem { Text = w.name, Value = w.id.ToString() });

model.raceList = entity.PetRaces.Select(w => new SelectListItem { Text = w.name, Value = SqlFunctions.StringConvert((double)w.id).Trim() });
于 2013-05-31T10:53:42.220 に答える