我必须创建一个DropDownList
,通过WCF REST从数据库中填充该值。到目前为止,json获取了数据,但当我使用它并将其放在DropDownList
HTML Helper上时,SelectList
始终仅显示模型的名称。
Screenshot Result Name of model
但是当我将模型放在@HTML.DisplayFor
上时,数据显示为this
查看
@Html.DisplayFor(model => model.GetClassID, "Select")
@Html.DropDownListFor(model => model.GetSchedule.ClassIDS, new SelectList(Model.GetClassID, "ClassID"), new { @class = "select2" })
我使用Select 2但很确定这不是类错误,当我删除类时没有改变
从WCF检索JSON
public List<ClassIDOnly> GetSingleClassID()
{
var json = new WebClient().DownloadString(SU.URLService + "ViewSingleClassID");
JObject rss = JObject.Parse(json);
JArray items = (JArray)rss["GetSingleClassIDResult"];
var myReturn = new List<ClassIDOnly>();
for (int i = 0; i < items.Count; i++)
{
myReturn.Add(new ClassIDOnly
{
ClassID = Convert.ToInt32(rss["GetSingleClassIDResult"][i]["ClassID"]),
});
Console.WriteLine(myReturn);
}
return myReturn;
}
它运作正常。
模型
public class MixSchedule
{
public Schedule GetSchedule { get; set; }
public List<ClassIDOnly> GetClassID { get; set; }
}
控制器
ClassModel cm = new ClassModel();
var viewm = new MixSchedule
{
GetClassID = cm.GetSingleClassID()
};
return View (viewm);
我尝试了很多方法,包括使用ViewBag但结果是一样的。我的代码有问题吗?提前谢谢。
答案 0 :(得分:0)
所以我认为你需要回顾一些事情:
在您的模型中,GetClassID不应反映元素列表,而应反映用户选择的元素: 我看起来像这样:
public class MixSchedule { public string ClassID { get; set; } }
如果您没有告诉SelectList
哪个是dataTextField,它将调用ToString
方法。这就是为什么你没有得到正确的文字。所以看起来应该是这样的:
@Html.DropDownListFor(model => model.ClassID, new SelectList(Model.GetClassID(), "ClassID", "ClassID"), new { @class = "select2" })