Asp.net 如何从下拉列表中获取字符串

Asp.net 如何从下拉列表中获取字符串,asp.net,asp.net-mvc,asp.net-mvc-2,Asp.net,Asp.net Mvc,Asp.net Mvc 2,我的控制器中有此代码用于索引视图 public ActionResult Index(int? id) { _viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().ToList().OrderBy(n => n.ServiceTypeName).ToList(), "ServiceTypeId", "ServiceTypeName");

我的控制器中有此代码用于索引视图

 public ActionResult Index(int? id)
        {
            _viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().ToList().OrderBy(n => n.ServiceTypeName).ToList(), "ServiceTypeId", "ServiceTypeName");
            return View(_viewModel);
        }
使用此功能,我可以在dropdownlist框中显示视图中的所有服务类型。代码是

<%=Html.DropDownList("ServiceTypeListAll", new SelectList(Model.ServiceTypeListAll,"Value","Text"))%>
我希望CategoryName应该是字符串,就像我在Dropdownlist框中显示的一样

我得到的是整数值

这是我做错了什么吗


谢谢

这是HTML中选择框的外观

<select>
  <option value="1">Item 1</option>
  <option value="2">Item 2</option>
  <option value="3">Item 3</option>
</select>
2) 获取int值后,从存储库加载适当的对象

int categoryId = Convert.ToInt32(collection["ServiceTypeListAll"]);
string categoryName = _bvRepository.Get(categoryId); // or whatever method loads your object

这是HTML中选择框的外观

<select>
  <option value="1">Item 1</option>
  <option value="2">Item 2</option>
  <option value="3">Item 3</option>
</select>
2) 获取int值后,从存储库加载适当的对象

int categoryId = Convert.ToInt32(collection["ServiceTypeListAll"]);
string categoryName = _bvRepository.Get(categoryId); // or whatever method loads your object

dropdownlist的值是其ID属性,您将其指定为
ServiceTypeId

您需要将ID指定为
ServiceTypeName
,如下所示:

_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().OrderBy(n => n.ServiceTypeName), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="1">Service Type 1</option>
  <option value="2">Service Type 2</option>
  <option value="3">Service Type 3</option>
</select>
_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().ToList().OrderBy(n => n.ServiceTypeName).ToList(), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="Service Type 1">Service Type 1</option>
  <option value="Service Type 2">Service Type 2</option>
  <option value="Service Type 3">Service Type 3</option>
</select>
另外,
Model.ServiceTypeListAll
已经是一个
SelectList
;您不需要包装它:

<%=Html.DropDownList("ServiceTypeListAll", Model.ServiceTypeListAll)%>

dropdownlist的值是其ID属性,您将其指定为
ServiceTypeId

您需要将ID指定为
ServiceTypeName
,如下所示:

_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().OrderBy(n => n.ServiceTypeName), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="1">Service Type 1</option>
  <option value="2">Service Type 2</option>
  <option value="3">Service Type 3</option>
</select>
_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().ToList().OrderBy(n => n.ServiceTypeName).ToList(), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="Service Type 1">Service Type 1</option>
  <option value="Service Type 2">Service Type 2</option>
  <option value="Service Type 3">Service Type 3</option>
</select>
另外,
Model.ServiceTypeListAll
已经是一个
SelectList
;您不需要包装它:

<%=Html.DropDownList("ServiceTypeListAll", Model.ServiceTypeListAll)%>

对Html.DropDownList()的调用将生成如下所示的Html:

_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().OrderBy(n => n.ServiceTypeName), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="1">Service Type 1</option>
  <option value="2">Service Type 2</option>
  <option value="3">Service Type 3</option>
</select>
_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().ToList().OrderBy(n => n.ServiceTypeName).ToList(), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="Service Type 1">Service Type 1</option>
  <option value="Service Type 2">Service Type 2</option>
  <option value="Service Type 3">Service Type 3</option>
</select>
为了生成如下所示的html:

_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().OrderBy(n => n.ServiceTypeName), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="1">Service Type 1</option>
  <option value="2">Service Type 2</option>
  <option value="3">Service Type 3</option>
</select>
_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().ToList().OrderBy(n => n.ServiceTypeName).ToList(), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="Service Type 1">Service Type 1</option>
  <option value="Service Type 2">Service Type 2</option>
  <option value="Service Type 3">Service Type 3</option>
</select>

服务类型1
服务类型2
服务类型3
另外,顺便说一句,您应该能够简化HtmlHelper调用:

<%=Html.DropDownList("ServiceTypeListAll", Model.ServiceTypeListAll)%>


无需创建另一个SelectList…

您对Html的调用。DropDownList()将生成如下所示的Html:

_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().OrderBy(n => n.ServiceTypeName), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="1">Service Type 1</option>
  <option value="2">Service Type 2</option>
  <option value="3">Service Type 3</option>
</select>
_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().ToList().OrderBy(n => n.ServiceTypeName).ToList(), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="Service Type 1">Service Type 1</option>
  <option value="Service Type 2">Service Type 2</option>
  <option value="Service Type 3">Service Type 3</option>
</select>
为了生成如下所示的html:

_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().OrderBy(n => n.ServiceTypeName), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="1">Service Type 1</option>
  <option value="2">Service Type 2</option>
  <option value="3">Service Type 3</option>
</select>
_viewModel.ServiceTypeListAll = new SelectList(_bvRepository.GetAllServiceTypes().ToList().OrderBy(n => n.ServiceTypeName).ToList(), "ServiceTypeName", "ServiceTypeName");
<select name="ServiceTypeListAll">
  <option value="Service Type 1">Service Type 1</option>
  <option value="Service Type 2">Service Type 2</option>
  <option value="Service Type 3">Service Type 3</option>
</select>

服务类型1
服务类型2
服务类型3
另外,顺便说一句,您应该能够简化HtmlHelper调用:

<%=Html.DropDownList("ServiceTypeListAll", Model.ServiceTypeListAll)%>


无需创建另一个SelectList…

根本不调用
ToList()
。根本不调用
ToList()
。我不需要输入我需要的项目1或项目2的号码。。在我的控制器里。感谢您的更新,感谢您抽出时间。。SLaks的解决方案对我很有效。。谢谢你能帮我写这篇文章吗。我不需要号码我需要第1项或第2项。。在我的控制器里。感谢您的更新,感谢您抽出时间。。SLaks的解决方案对我很有效。。谢谢你能帮我写这篇文章吗。渣。。你能再帮我解决一个问题吗!请我将发布不同的问题,请注意。。谢谢你。。请你看看这个帖子好吗。。渣。。你能再帮我解决一个问题吗!请我将发布不同的问题,请注意。。谢谢你。。请你看看这个帖子好吗。。