在mvc中使用逗号分隔值选择ListBox项?

时间:2017-05-05 05:15:42

标签: c# asp.net-mvc-5 listbox

我将选中的ListBox项值保存在逗号分隔的字符串中。

private string fabricString(IEnumerable<string> fabricsList)
    {
        string str = string.Join(",", fabricsList);
        return str;
    }

例如 str =&#34; 1,3&#34;

现在在编辑控制器中,我如何根据上面的字符串选择ListBox中的Text。

public ActionResult Edit(int? id)
    {

        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        fad_Data fad_Data = db.fad_Data.Find(id);
        fad_Data.sizeList = fad_Data.size.Split(',').ToList().Select(s => new SelectListItem() { Text = s, Value = s });
        if (fad_Data == null)
        {
            return HttpNotFound();
        }
        return View(fad_Data);
    }

使用上面的代码我得到错误

类型&#39; System.ArgumentNullException&#39;的例外情况发生在System.Web.Mvc.dll中但未在用户代码中处理 在线

fad_Data.sizeList = fad_Data.size.Split(&#39;,&#39;)。ToList()。选择(s =&gt; new SelectListItem(){Text = s,Value = s}); < / p>

如何做到。

1 个答案:

答案 0 :(得分:0)

您可能正在尝试将IEnumerable分配给导致List<T>的{​​{1}}类型。

以下代码是一个更安全的版本。

ArgumentNullException

public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } fad_Data fad_Data = db.fad_Data.Find(id); fad_Data?.sizeList = fad_Data?.size?.Split(',').ToList().Select(s => new SelectListItem() { Text = s, Value = s }).ToList(); // You need to add ToList() at the end. if (fad_Data.sizeList == null) { return HttpNotFound(); } return View(fad_Data); } 此条件访问可以转换为

var bar = foo?.buz();