1

ここで何が間違っていますか?

私がやろうとしているのは、関数値と関数名のリストをjSonの結果に入力し、それをメインページでjQueryで使用することです。

エラーは次のとおりです。

エラー 5 型 'System.Collections.Generic.IEnumerable' を 'System.Web.Mvc.SelectList' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)

    public ActionResult FilterFunctionList(int departmentID = 0)
    {
        if (departmentID == 0)
        {
            return this.Json(string.Empty, JsonRequestBehavior.AllowGet);
        }
        IPACS_Departments ipacs_department = db.IPACS_Department.Find(departmentID);
        SelectList ipacs_functions = ipacs_department.IPACS_Functions.Select(m => new SelectListItem
        {
            Value = SqlFunctions.StringConvert((double)m.functionID).Trim(),
            Text = m.name
        });


        return this.Json(ipacs_functions, JsonRequestBehavior.AllowGet);
    }
    #endregion
4

2 に答える 2

3

のコンストラクターをSelectList使用IEnumerableしてみてください:

SelectList ipacs_functions = new SelectList(
    ipacs_department.IPACS_Functions.Select(m => new SelectListItem {
        Value = SqlFunctions.StringConvert((double)m.functionID).Trim(),
        Text = m.name
    })
,   "Value"
,   "Text"
);
于 2013-07-19T15:58:38.940 に答える
0

dasblinkenlightは確かに正しいですが、これらのコレクションをIEnumberable<SelectListItem>ViewModel コード ビハインドのように定義して、これらの魔法の文字列の「Value」および「Text」パラメーターを使用する必要性を削減することを好みます。

public int FavoriteMovieID { get; set; }

public IEnumerable<SelectListItem> MoviesToSelectFrom 
{
    get
    {
        return from x in OrderDetailsRepo.GetAllMovies()
                select new SelectListItem {
                    Text = x.Title,
                    Value = x.ID.ToString(),
                    Selected = x.id == this.FavoriteMovieID,
                };
    }
}

少しきれいに見えます、IMHO。View 側では、すべてのヘルパー メソッドが必要になるだけなIEnumberable<SelectListItem>ので (SelectList が実装します!)、同じように見えます。

@Html.DropDownListFor(model => model.FavoriteMovieID, Model.MoviesToSelectFrom)
于 2013-07-19T19:27:14.113 に答える