我如何创建一个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()与Int值

…所以有一种方法来传递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));
}