下拉框不返回值

时间:2014-05-22 06:43:47

标签: asp.net-mvc

我有以下代码填充下拉框,它选择当前的RunArea将其分配给选定的Run with run.RunRunAreaID 但是当我更新Run时,RunArea将其下载'没有发回ID,所以我最终得到了NULL

我的控制器

public ActionResult Edit(int? id)
{
    Run run = db.Runs.Find(id);

    ViewBag.RunAreaName = new SelectList(db.RunAreas, "ID", "RunAreaName", run.RunRunAreaID);

    return View(run);
}

我的观点

@Html.DropDownList("RunAreaName")

这一切都在Run控制器中完成,Drop Down用不同的表/ Model填充Run Areas,因此One Run Area有很多运行。

修改

我有五个运行区域,它们都被传递到视图,所有五个运行区域显示在下拉框中,并为该特定运行选择了正确的一个,因此我需要 run.RunRunAreaId < / strong>即可。一切正常。

但是如果我在下拉列表中更新/更改运行区域,则视图将返回该字段的NULL。

修改

RunArea Model

public partial class RunArea
{
    public int ID { get; set; }
    public string RunAreaName { get; set; }

    public List<Run> Runs { get; set; }
}

运行模型

public partial class Run
{
    public int ID { get; set; }
    public int RunReportID { get; set; }
    public int RunRunAreaID { get; set; }
    public string RunName { get; set; }
    public bool RunSnowmaking { get; set; }
    public bool RunGroomed { get; set; }
    public bool RunDisplaySnowmaking { get; set; }
    public bool RunLikely { get; set; }

    public RunArea RunArea { get; set; }
}

延迟加载在推出XML时被关闭

2 个答案:

答案 0 :(得分:1)

我希望这对你有用

ViewBag.RunAreaName = new SelectList(db.RunAreas, "ID", "RunAreaName", run.RunRunAreaID);

在您的视图中:

using (@Html.BeginForm(//add your form setting))
{
    //first parameter to set id and name for drop down list
    //second parameter bind data to it.
    @Html.DropDownList("RunRunID", (SelectList)ViewBag.RunAreaName)
    //add some other property here
}

请注意,我在ID中将RunRunAreaID更改为ViewBag.RunAreaName。这将在提交到服务器

时将您的下拉列表值绑定到Model.RunRunAreaID

答案 1 :(得分:0)

在您的视图中使用此

@Html.DropDownList("RunAreaName",ViewBag.RunAreaName as SelectList,"Select Text")

也在这里

ViewBag.RunAreaName = new SelectList(db.RunAreas, "ID", "RunAreaName", run.RunRunAreaID);

我认为你不需要run.RunRunAreaId

ViewBag.RunAreaName = new SelectList(db.RunAreas, "ID", "RunAreaName") 

就够了