我如何创建一个SelectListItem()与Int值
本文关键字:SelectListItem 一个 Int 创建 何创建 | 更新日期: 2023-09-27 18:15:29
我有以下代码在我的asp.net mvc的动作方法:-
var CustomerData = customerlist.Select(m => new SelectListItem()
{
Text = m.SDOrganization.NAME,
Value = m.SDOrganization.ORG_ID.ToString(),
});
目前,如果我从ORG_ID中删除ToString(),我会得到一个错误,"不能显式地将长转换为字符串"。所以似乎我必须定义值和文本的SelectListItem作为字符串。但是因为SelectListItem应该保持长,所以有一种方法来传递SelectListItem的值为长而不是字符串?
…所以有一种方法来传递SelectListItem的值为长而不是字符串?
。这样做没有任何意义,因为当它被渲染时,它只是HTML,没有long
的概念。
如果我们有动作
public ActionResult Test()
{
var dictionary = new Dictionary<int, string>
{
{ 1, "One" },
{ 2, "Two" },
{ 3, "Three" }
};
ViewBag.SelectList = new SelectList(dictionary, "Key", "Value");
return this.View();
}
和以下视图"Test.cshtml":
@using (Html.BeginForm())
{
@Html.DropDownList("id", ((SelectList)ViewBag.SelectList), "All")
<input type="submit" value="Go" />
}
生成的HTML是
<form action="/home/test" method="post">
<select id="id" name="id">
<option value="">All</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<input type="submit" value="Go">
</form>
当我们发布到这个动作时,你的号码文本会被模型绑定器有效地解析回你想要的类型
[HttpPost]
public ActionResult Test(int? id)
{
var selectedValue = id.HasValue ? id.ToString() : "All";
return Content(String.Format("You selected '{0}'", selectedValue));
}