DropDownList仅显示模型名称

时间:2017-05-20 16:24:16

标签: c# asp.net-mvc html-helper html.dropdownlistfor

我必须创建一个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但结果是一样的。我的代码有问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

所以我认为你需要回顾一些事情:

  1. 在您的模型中,GetClassID不应反映元素列表,而应反映用户选择的元素: 我看起来像这样:

    public class MixSchedule { public string ClassID { get; set; } }

  2. 如果您没有告诉SelectList哪个是dataTextField,它将调用ToString方法。这就是为什么你没有得到正确的文字。所以看起来应该是这样的:

    @Html.DropDownListFor(model => model.ClassID, new SelectList(Model.GetClassID(), "ClassID", "ClassID"), new { @class = "select2" })