C# 从Dropdownlist模型中获取发布的ID,该模型未包含在modelview中

C# 从Dropdownlist模型中获取发布的ID,该模型未包含在modelview中,c#,asp.net-mvc,entity-framework,razor,asp.net-mvc-5,C#,Asp.net Mvc,Entity Framework,Razor,Asp.net Mvc 5,当我尝试将发布的信息插入到与“银行”有直接关系的模型中时,它工作得非常好 直接模型的代码段,可以很好地处理自动实现的CRUD操作 public class Organization { public int ID { get; set; } .... [Display(Name = "Bank:")] public int BankID { get; set; } public virtual Bank Bank { get; set; } ...

当我尝试将发布的信息插入到与“银行”有直接关系的模型中时,它工作得非常好

直接模型的代码段,可以很好地处理自动实现的CRUD操作

public class Organization
{
    public int ID { get; set; }
    ....
    [Display(Name = "Bank:")]
    public int BankID { get; set; }
    public virtual Bank Bank { get; set; }
    ....
}

public class Bank
{
    public int ID { get; set; }
    [Display(Name = "Bank")]
    public string Title { get; set; }
}
控制器:

public ActionResult Create()
{
    ViewBag.BankID = new SelectList(db.Banks, "ID", "Title");
    ....
    return View();
}

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Organization organization)
{
    if (ModelState.IsValid)
    {
        organization.OrganizationStatusID = 1;
        db.Organizations.Add(organization);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    ViewBag.BankID = new SelectList(db.Banks, "ID", "Title", organization.BankID);
    ....
    return View(organization);
}
但我面临的问题是,当我试图通过以下方式实施它时:

public class _OrganizationUserSignedBy
{
    public int ID { get; set; }
    public Organization Organization { get; set; }
    ....
}
此ModelView仅在Dropdownlist中显示银行信息,尽管当通过“提交”按钮发布信息时,它会给我一个错误,即bankID不能为空。我测试了它是否有效,如果我手动插入所有选择的dropdownlist项都是1(例如:_OrganizationUserSignedBy.Organization.BankID=1;),它工作正常。问题是在我的ModelView中没有正确接收已发布的信息

Modelview代码段:

控制器

public ActionResult Create()
{
    ViewBag.BankID = new SelectList(db.Banks, "ID", "Title");
    ....
    return View();
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(_OrganizationUserSignedBy _OrganizationUserSignedBy)
{
    if (ModelState.IsValid)
    {
        _OrganizationUserSignedBy.Organization.OrganizationStatusID = 1;
        db.Organizations.Add(_OrganizationUserSignedBy.Organization);
        _OrganizationUserSignedBy.Organization.BankID = 1;
        ....
        db.SaveChanges();
        _OrganizationUserSignedBy.User.OrganizationID = db.Organizations.Max(x => x.ID);
        _OrganizationUserSignedBy.SignedBy.OrganizationID = db.Organizations.Max(x => x.ID);
        db.Users.Add(_OrganizationUserSignedBy.User);
        db.SignedBys.Add(_OrganizationUserSignedBy.SignedBy);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    ViewBag.BankID = new SelectList(db.Banks, "ID", "Title", _OrganizationUserSignedBy.Organization.BankID);
    ....
    return View(_OrganizationUserSignedBy);
} 
创建视图:

@model MVC_CPO_REGRELEASE.Models._OrganizationUserSignedBy
....
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    ....
    @Html.LabelFor(model => model.Organization.BankID, "*Banko pavadinimas:")
    @Html.DropDownList("BankID", null, "Pasirinkite...")
    @Html.ValidationMessageFor(model => model.Organization.BankID)
一周来我一直在寻找解决办法,但我找不到解决办法。。如果您现在或将来有任何建议,我将不胜感激。谢谢大家!

PS:一些代码被删除了,因此您不需要太长时间就能理解问题所在。

您创建的
元素具有与模型无关的名称属性。例如,第一个是

<select name="BankID" .... >
在控制器中

public ActionResult Create()
{
    OrganizationUserSignedByVM model= new OrganizationUserSignedByVM();
    ConfigureViewModel(model);
    return View(model);
}
public ActionResult Create(OrganizationUserSignedByVM model)
{
    if (!ModelState.IsValid)
    {
        ConfigureViewModel(model);
        return View(model);
    }
    // initialise a new instance of your data model(s) and save
    // redirect
}

private void ConfigureViewModel(OrganizationUserSignedByVM model)
{
    model.BankList = new SelectList(db.Banks, "ID", "Title");
    ....
}
在我看来

@model yourAssembly.OrganizationUserSignedByVM 
@using (Html.BeginForm())
{
    @Html.LabelFor(m => m.SelectedBank)
    @Html.DropDownListFor(m => m.SelectedBank, Model.BankList, "-Please select-")
    @Html.ValidationMessageFor(m => m.SelectedBank)
    ....
    <input type="submit" value="Save" />
}
@model yourAssembly.OrganizationUserSignedByVM
@使用(Html.BeginForm())
{
@LabelFor(m=>m.SelectedBank)
@Html.DropDownListFor(m=>m.SelectedBank,Model.BankList,“-请选择-”)
@Html.ValidationMessageFor(m=>m.SelectedBank)
....
}
@model yourAssembly.OrganizationUserSignedByVM 
@using (Html.BeginForm())
{
    @Html.LabelFor(m => m.SelectedBank)
    @Html.DropDownListFor(m => m.SelectedBank, Model.BankList, "-Please select-")
    @Html.ValidationMessageFor(m => m.SelectedBank)
    ....
    <input type="submit" value="Save" />
}