Asp.net mvc 如何使dropdownlist在asp.net mvc中显示选定值?

Asp.net mvc 如何使dropdownlist在asp.net mvc中显示选定值?,asp.net-mvc,drop-down-menu,findby,Asp.net Mvc,Drop Down Menu,Findby,我有一个编辑页面,里面有一个Html.DropDownList…我不能显示它总是显示在Select中的DropDownList值,而是我想让下拉列表显示一个基于模型值选择的项目,比如model.Mes\u Id。。。任何关于如何做的建议 <p> <label for="MeasurementTypeId">MeasurementType:</label> <%= Html.DropDownList(

我有一个编辑页面,里面有一个Html.DropDownList…我不能显示它总是显示在
Select
中的DropDownList值,而是我想让下拉列表显示一个基于模型值选择的项目,比如
model.Mes\u Id
。。。任何关于如何做的建议

       <p>
            <label for="MeasurementTypeId">MeasurementType:</label>
         <%= Html.DropDownList("MeasurementType", // what should i give here?)%>
            <%= Html.ValidationMessage("MeasurementTypeId", "*") %>
        </p>
我的存储库方法

public IEnumerable<SelectListItem> FindAllMeasurements()
        {
            var mesurements = from mt in db.MeasurementTypes
                              select new SelectListItem
                              {
                                 Value = mt.Id.ToString(),
                                 Text= mt.Name
                              };
            return mesurements;
        }
public IEnumerable FindAllMeasurements()
{
var测量=以db为单位的mt测量类型
选择新的SelectListItem
{
值=mt.Id.ToString(),
Text=机器名
};
回报测量;
}

看看这篇博客文章

基本上,您需要将
测量类型
列表/枚举转换为
选择列表
IEnumerable


如果可能的话,我建议升级到ASP.NET MVC2并使用
Html.DropDownListFor()

查看此博客条目

基本上,您需要将
测量类型
列表/枚举转换为
选择列表
IEnumerable


如果可能的话,我建议升级到ASP.NET MVC2,并使用
Html.DropDownListFor()

您应该返回一个可以指定所选项目的SelectionList


您应该返回一个可指定所选项目的SelectionList


假设Model.Mes\u Id包含所选值,您可以执行以下操作

<%
    var Measurements = new SelectList((IEnumerable)ViewData["MeasurementType"], "Id", "Name", Model.Mes_Id);
    Response.Write(Html.DropDownList("measurement_type", Measurements, "Select"));
%>
    (in Edit method )

    CreatList(long.Parse(wc.ParentID.ToString()));


    private void CreatList(long selected= 0)
    {
        SqlConnection conn = new SqlConnection(Config.ConnectionStringSimple);
        conn.Open();
        Category wn = new Category(conn);
        CategoryCollection coll = new CategoryCollection();
        Category.FetchList(conn, ref coll);

        ViewBag.ParentID = GetList(coll, selected);   
    }


    private List<SelectListItem> GetList(CategoryCollection coll, long selected)
    {
        List<SelectListItem> st = new List<SelectListItem>();
        foreach (var cat in coll)
        {
            st.Add( new SelectListItem
            {
                Text = cat.Name,
                Value = cat.ID.ToString(),
                Selected = cat.ID == selected
            });

        }
        SelectListItem s = new SelectListItem { 
                                Text = Resources.lblSelect, 
                                Value = "0" 
        };
        st.Insert(0, s);
        return st;
    }


    <div class="editor-label">
        @Html.LabelFor(model => model.ParentID)
    </div>
    <div class="editor-field">
        @Html.DropDownList("ddlCat", (List<SelectListItem>)ViewBag.ParentID)
        @Html.ValidationMessageFor(model => model.ParentID)
    </div>

假设Model.Mes\u Id包含所选值,您可以执行以下操作

<%
    var Measurements = new SelectList((IEnumerable)ViewData["MeasurementType"], "Id", "Name", Model.Mes_Id);
    Response.Write(Html.DropDownList("measurement_type", Measurements, "Select"));
%>
    (in Edit method )

    CreatList(long.Parse(wc.ParentID.ToString()));


    private void CreatList(long selected= 0)
    {
        SqlConnection conn = new SqlConnection(Config.ConnectionStringSimple);
        conn.Open();
        Category wn = new Category(conn);
        CategoryCollection coll = new CategoryCollection();
        Category.FetchList(conn, ref coll);

        ViewBag.ParentID = GetList(coll, selected);   
    }


    private List<SelectListItem> GetList(CategoryCollection coll, long selected)
    {
        List<SelectListItem> st = new List<SelectListItem>();
        foreach (var cat in coll)
        {
            st.Add( new SelectListItem
            {
                Text = cat.Name,
                Value = cat.ID.ToString(),
                Selected = cat.ID == selected
            });

        }
        SelectListItem s = new SelectListItem { 
                                Text = Resources.lblSelect, 
                                Value = "0" 
        };
        st.Insert(0, s);
        return st;
    }


    <div class="editor-label">
        @Html.LabelFor(model => model.ParentID)
    </div>
    <div class="editor-field">
        @Html.DropDownList("ddlCat", (List<SelectListItem>)ViewBag.ParentID)
        @Html.ValidationMessageFor(model => model.ParentID)
    </div>

在创建
IEnumerable
时设置所选项目

就我个人而言,我会为表单创建一个专门的viewmodel,但根据您的代码,执行以下操作:

public ActionResult Edit(int id)
{
    //Put this first
    var material = consRepository.GetMaterial(id);
    //pass in your selected item
    var mesurementTypes = consRepository.FindAllMeasurements(material.MeasurementTypeId);
    ViewData["MeasurementType"] = mesurementTypes;

    return View("Edit", material);
}
public IEnumerable<SelectListItem> FindAllMeasurements(int selectedId)
{
     var mesurements = from mt in db.MeasurementTypes
                      select new SelectListItem
                      {
                         Value = mt.Id.ToString(),
                         Text= mt.Name,
                         Selected = mt.Id == selectedId
                      };

    return mesurements;
}
然后将您的存储库方法更改为:

public ActionResult Edit(int id)
{
    //Put this first
    var material = consRepository.GetMaterial(id);
    //pass in your selected item
    var mesurementTypes = consRepository.FindAllMeasurements(material.MeasurementTypeId);
    ViewData["MeasurementType"] = mesurementTypes;

    return View("Edit", material);
}
public IEnumerable<SelectListItem> FindAllMeasurements(int selectedId)
{
     var mesurements = from mt in db.MeasurementTypes
                      select new SelectListItem
                      {
                         Value = mt.Id.ToString(),
                         Text= mt.Name,
                         Selected = mt.Id == selectedId
                      };

    return mesurements;
}
public IEnumerable FindAllMeasurements(int-selectedId)
{
var测量=以db为单位的mt测量类型
选择新的SelectListItem
{
值=mt.Id.ToString(),
Text=机器名称,
所选=机器识别号==所选识别号
};
回报测量;
}
HTHs,

Charles

在创建
IEnumerable
时设置所选项目

就我个人而言,我会为表单创建一个专门的viewmodel,但根据您的代码,执行以下操作:

public ActionResult Edit(int id)
{
    //Put this first
    var material = consRepository.GetMaterial(id);
    //pass in your selected item
    var mesurementTypes = consRepository.FindAllMeasurements(material.MeasurementTypeId);
    ViewData["MeasurementType"] = mesurementTypes;

    return View("Edit", material);
}
public IEnumerable<SelectListItem> FindAllMeasurements(int selectedId)
{
     var mesurements = from mt in db.MeasurementTypes
                      select new SelectListItem
                      {
                         Value = mt.Id.ToString(),
                         Text= mt.Name,
                         Selected = mt.Id == selectedId
                      };

    return mesurements;
}
然后将您的存储库方法更改为:

public ActionResult Edit(int id)
{
    //Put this first
    var material = consRepository.GetMaterial(id);
    //pass in your selected item
    var mesurementTypes = consRepository.FindAllMeasurements(material.MeasurementTypeId);
    ViewData["MeasurementType"] = mesurementTypes;

    return View("Edit", material);
}
public IEnumerable<SelectListItem> FindAllMeasurements(int selectedId)
{
     var mesurements = from mt in db.MeasurementTypes
                      select new SelectListItem
                      {
                         Value = mt.Id.ToString(),
                         Text= mt.Name,
                         Selected = mt.Id == selectedId
                      };

    return mesurements;
}
public IEnumerable FindAllMeasurements(int-selectedId)
{
var测量=以db为单位的mt测量类型
选择新的SelectListItem
{
值=mt.Id.ToString(),
Text=机器名称,
所选=机器识别号==所选识别号
};
回报测量;
}
HTHs,

Charles

Html.DropDownListFor对我不起作用,所以我得到了这样的罂粟花

<%
    var Measurements = new SelectList((IEnumerable)ViewData["MeasurementType"], "Id", "Name", Model.Mes_Id);
    Response.Write(Html.DropDownList("measurement_type", Measurements, "Select"));
%>
    (in Edit method )

    CreatList(long.Parse(wc.ParentID.ToString()));


    private void CreatList(long selected= 0)
    {
        SqlConnection conn = new SqlConnection(Config.ConnectionStringSimple);
        conn.Open();
        Category wn = new Category(conn);
        CategoryCollection coll = new CategoryCollection();
        Category.FetchList(conn, ref coll);

        ViewBag.ParentID = GetList(coll, selected);   
    }


    private List<SelectListItem> GetList(CategoryCollection coll, long selected)
    {
        List<SelectListItem> st = new List<SelectListItem>();
        foreach (var cat in coll)
        {
            st.Add( new SelectListItem
            {
                Text = cat.Name,
                Value = cat.ID.ToString(),
                Selected = cat.ID == selected
            });

        }
        SelectListItem s = new SelectListItem { 
                                Text = Resources.lblSelect, 
                                Value = "0" 
        };
        st.Insert(0, s);
        return st;
    }


    <div class="editor-label">
        @Html.LabelFor(model => model.ParentID)
    </div>
    <div class="editor-field">
        @Html.DropDownList("ddlCat", (List<SelectListItem>)ViewBag.ParentID)
        @Html.ValidationMessageFor(model => model.ParentID)
    </div>
(在编辑方法中)
CreatList(long.Parse(wc.ParentID.ToString());
私有void创建列表(长选中=0)
{
SqlConnection conn=新的SqlConnection(Config.ConnectionStringSimple);
conn.Open();
类别wn=新类别(康涅狄格州);
CategoryCollection coll=新的CategoryCollection();
类别。获取列表(conn,ref coll);
ViewBag.ParentID=GetList(coll,选中);
}
私有列表GetList(类别集合集合集合,长选中)
{
List st=新列表();
foreach(coll中的var cat)
{
st.Add(新建SelectListItem)
{
Text=cat.Name,
Value=cat.ID.ToString(),
已选择=类别ID==已选择
});
}
SelectListItems=新建SelectListItem{
Text=Resources.lblSelect,
Value=“0”
};
圣插入(0,s);
返回st;
}
@LabelFor(model=>model.ParentID)
@DropDownList(“ddlCat”,(列表)ViewBag.ParentID)
@Html.ValidationMessageFor(model=>model.ParentID)

Html.DropDownListFor对我不起作用,所以我得到了这样的罂粟花

<%
    var Measurements = new SelectList((IEnumerable)ViewData["MeasurementType"], "Id", "Name", Model.Mes_Id);
    Response.Write(Html.DropDownList("measurement_type", Measurements, "Select"));
%>
    (in Edit method )

    CreatList(long.Parse(wc.ParentID.ToString()));


    private void CreatList(long selected= 0)
    {
        SqlConnection conn = new SqlConnection(Config.ConnectionStringSimple);
        conn.Open();
        Category wn = new Category(conn);
        CategoryCollection coll = new CategoryCollection();
        Category.FetchList(conn, ref coll);

        ViewBag.ParentID = GetList(coll, selected);   
    }


    private List<SelectListItem> GetList(CategoryCollection coll, long selected)
    {
        List<SelectListItem> st = new List<SelectListItem>();
        foreach (var cat in coll)
        {
            st.Add( new SelectListItem
            {
                Text = cat.Name,
                Value = cat.ID.ToString(),
                Selected = cat.ID == selected
            });

        }
        SelectListItem s = new SelectListItem { 
                                Text = Resources.lblSelect, 
                                Value = "0" 
        };
        st.Insert(0, s);
        return st;
    }


    <div class="editor-label">
        @Html.LabelFor(model => model.ParentID)
    </div>
    <div class="editor-field">
        @Html.DropDownList("ddlCat", (List<SelectListItem>)ViewBag.ParentID)
        @Html.ValidationMessageFor(model => model.ParentID)
    </div>
(在编辑方法中)
CreatList(long.Parse(wc.ParentID.ToString());
私有void创建列表(长选中=0)
{
SqlConnection conn=新的SqlConnection(Config.ConnectionStringSimple);
conn.Open();
类别wn=新类别(康涅狄格州);
CategoryCollection coll=新的CategoryCollection();
类别。获取列表(conn,ref coll);
ViewBag.ParentID=GetList(coll,选中);
}
私有列表GetList(类别集合集合集合,长选中)
{
List st=新列表();
foreach(coll中的var cat)
{
st.Add(新建SelectListItem)
{
Text=cat.Name,
Value=cat.ID.ToString(),
已选择=类别ID==已选择
});
}
SelectListItems=新建SelectListItem{
Text=Resources.lblSelect,
Value=“0”
};
圣插入(0,s);
返回st;
}
@LabelFor(model=>model.ParentID)
@DropDownList(“ddlCat”,(列表)ViewBag.ParentID)
@Html.ValidationMessageFor(model=>model.ParentID)

请提供更多详细信息。你发布的代码完全符合它的要求。使用一个选项创建标记,其值为“选择”。你想完成什么?注意HTML.DROPPDRONT有9个重载。@ John考虑我的下拉列表包含9个项目…code>Model.Mes_Id=5我想选择值为
5的度量类型<