Asp.net mvc 下拉框不返回值

Asp.net mvc 下拉框不返回值,asp.net-mvc,Asp.net Mvc,我用下面的代码填充了一个下拉框,它选择当前运行区域,并使用Run.runareaid将其分配给所选的运行,但是当我更新运行时,运行区域下拉框没有发送回ID,因此我以NULL结束 我的控制器 public ActionResult Edit(int? id) { Run run = db.Runs.Find(id); ViewBag.RunAreaName = new SelectList(db.RunAreas, "ID", "RunAreaName", run.RunRunA

我用下面的代码填充了一个下拉框,它选择当前运行区域,并使用Run.runareaid将其分配给所选的运行,但是当我更新运行时,运行区域下拉框没有发送回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")
这都是在运行控制器中完成的,下拉列表中填充了不同表/模型的运行区域,因此一个运行区域有多个运行

编辑

我有五个跑步区域,它们都被传递到视图中,所有五个跑步区域都显示在下拉框中,为特定跑步选择了正确的区域,因此我需要跑步。RunAreaId。一切正常

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

编辑

运行区模式

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时关闭

在视图中使用此选项

@Html.DropDownList("RunAreaName",ViewBag.RunAreaName as SelectList,"Select Text")
也在这里

ViewBag.RunAreaName = new SelectList(db.RunAreas, "ID", "RunAreaName", run.RunRunAreaID);
我认为您不需要
run.runareaid

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

够了吗我希望这对你有用

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
}

请注意,我在
ViewBag.RunAreaName
中将
ID
更改为
runAreaId
。这会将您的dropdownlist值绑定到
模型。当提交到服务器时,RunAreaId

基于您当前的代码,我假设您的dropdownlist与任何请求参数都没有关联,因此它不会将其值发送到服务器。但是为了更好地查看上下文,请向我展示您的表单以及用于更新runAh的
编辑
,我是否应该将其以表单形式发送回去???我认为您应该如下创建您的dropdownlist:
@Html.dropdownlist(model=>model.runAreaId,ViewBag.RunAreaName)
,您将您的
runareaid
绑定到dropdownlist,它将与formdoan中的另一个数据一起提交到服务器,谢谢,但我已经尝试了所有这些。我在MVC5中这样做没有任何帮助,所有生成的代码都是不同的。这对我以前很有用!这就是我遇到的问题,这都是在运行控制器中出现的。下拉列表中填充了运行区域,因此我得到:数据绑定:“mysite.Models.RunArea”不包含名为“runareaid”的属性。如果我这么做了。我做了一个修改,请看一看谢谢,冠军,就是那个!