C# 如何创建具有Int值的SelectListItem()

C# 如何创建具有Int值的SelectListItem(),c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我的asp.net mvc操作方法中包含以下代码:- var CustomerData = customerlist.Select(m => new SelectListItem() { Text = m.SDOrganization.NAME, Value = m.SDOrganization.ORG_ID.ToString(), }); 当前,如果我从ORG_ID中删除T

我的asp.net mvc操作方法中包含以下代码:-

var CustomerData = customerlist.Select(m => new SelectListItem()
            {
                Text = m.SDOrganization.NAME,
                Value = m.SDOrganization.ORG_ID.ToString(),

            });
当前,如果我从ORG_ID中删除ToString(),我将得到一个错误“无法显式地将long转换为string”。因此,似乎我必须将SelectListItem的值和文本都定义为字符串。但是,既然SelectListItem应该保持long,那么有没有办法将SelectListItem的值传递为long而不是字符串

…那么有没有一种方法可以将SelectListItem的值传递为long而不是字符串

不。这样做没有任何意义,因为当它被呈现时,它只是HTML,没有长的概念

如果我们有行动

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();
}

上面的工作原理与您预期的一样。

阅读模型活页夹,它将帮助您理解为什么您不必太担心这个问题。但是这样一来,我在SelectListItem的值中有一个空字符串,如何使用模型活页夹绑定它?但是如果我想在SelectListItem中有一个选项,例如“All”,其中它的值应该为null,,,那么,最好的方法是什么呢?只需为该值使用一个空字符串,并在您发布到的操作中将其作为一个可为null的整数。那么您的意思是,如果我将一个空字符串定义为selectlistitem值,那么模型绑定器会将该空字符串映射为一个可为null的变量的null?
@using (Html.BeginForm())
{
    @Html.DropDownList("id", ((SelectList)ViewBag.SelectList), "All")
    <input type="submit" value="Go" />
}
<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));
}