编辑操作中的MVC填充下拉列表

时间:2010-01-18 00:14:25

标签: asp.net-mvc model-view-controller

我很担心在MVC中制作DropdownList。让我们从一个简单的案例开始。在地址视图中,我有一个City文本框和一个State下拉列表。我的模型Linq to SQL创建的地址表具有以下属性:

Public string City{get;set;}
Public string State{get;set;}

和另一个有状态的表。  在我的控制器中我做了以下方法:

public static SelectList getLang(string index)
{

       using (namespace.DB db = new namespace.DB())
         {
            List<namespace.Model.tbl_State> state= (from S in db.tbl_State orderby   L.Name select L).ToList();
            SelectList sel = new SelectList(state, "ID", "Name", index);
            return sel;
        }
    }
用于编辑的

和actionresult就像:

    public ActionResult Edit(int id)
    {
        using (namespace.DB db = new namespace.DB())
        {
            namespace.Model.tbl_Address add= db.tbl_Address.Single(T => T.ID == id);

            return View(add);
        }
    }

现在如何将所有这些方法放在一起。我希望在我的视图中显示城市和州的下拉列表中选择了CA ID。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,我将开始阅读有关MVC的一些教程或书籍:

https://stackoverflow.com/questions/240905/best-asp-net-mvc-book

您应该创建视图模型(首先阅读视图模型),它们看起来像:

class AddressEditModel
{  
    tbl_Address Address;
    List<tbl_State> States;
}

然后你必须从Linq到SQL构建这个模型:

public AddressEditModel ConstructAddressEditModel(int addressId)
{
    var model = new AddressEditModel();
    using (namespace.DB db = new namespace.DB())
    {
         model.States = state= (from S in db.tbl_State orderby L.Name select s).ToList();
         model.Address = db.tbl_Address.Single(T => T.ID == addressId);
    }
}

然后你的编辑方法:

public ActionResult Edit(int id)
{
    var model = ConstructAddressEditModel(id);
    return View(model);
}

然后将您的观点声明为:

System.Web.Mvc.ViewPage<AddressEditModel>

并使用Html.DropDown在您的视图中使用Model.States