【问题标题】:Put ViewBag Controller Value on View将 ViewBag 控制器值放在视图上
【发布时间】:2016-02-23 05:23:10
【问题描述】:

我正在尝试将ViewBag 数据从我的控制器传递到我的视图,如果我将Viewbag 放在Html.DropDownList 上,我会得到正确的值,但如果我使用<input value="@ViewBag.Group" />,我只会得到@987654326 @ 为什么我没有得到我的viewbag 的价值?

这是我的控制器 ViewBag:

    public ActionResult Index(string Selected)
    {
       List<string> listadesumas = new List<string>();
        var db = new PosContext();

      foreach (var item in db.Pos)
        {
            listadesumas.Add(item.ToString());

        }
        var grupos = new SelectList(listadesumas.ToList());

        ViewBag.Group = grupos;
 return View("~/Views/HomePos/Index.cshtml",db.Pos.ToList());
    }

和我从视图中的输入:

  <input value="@ViewBag.Group" />

我做错了什么?

【问题讨论】:

  • 当您调用@ViewBag.Group 时,您将获得由.Net 本身使用.ToString() 字符串化的grupos 变量的值。考虑使用具有强类型属性的视图模型,以便您可以估计哪些对象具有哪些类型您可以使用,以及您可以执行哪些操作。
  • 我已经有一个模型传递给我的视图,我无法合并它或向它添加更多变量,这就是我传递视图包的原因
  • A SelectList 是一个与创建下拉列表(&lt;select&gt; 标记)相关的类,但您声称您不需要下拉列表,因此不要使用它。你想要什么?

标签: c# asp.net-mvc razor viewbag


【解决方案1】:
@{
   var group = (SelectList)ViewBag.Group
 }

<select> @foreach(var item in group) { <option value='@item'>@item</option>
} </select>

【讨论】:

  • 我需要输入或标签而不是下拉列表我没有下拉列表的问题所以我更新了你的代码但我仍然​​没有得到结果@foreach (var item in group) { }
  • 它应该得到一个字符串,即时传递一个选定列表,但它只有一个数据
  • 当你只想渲染为文本时,为什么要传递SelecteList?将数组传递给ViewBag,在视图中你可以只使用foreach
  • 它非常令人困惑,但有时我可能会得到一个项目列表,然后我需要将它们全部显示出来,这就是我使用 selectedlist 的原因,问题是即使在我看来的 foreach 中,我也没有得到该列表仅引用,但我使用了一个 boxlist 并使其工作
【解决方案2】:

Viewbag.Group 包含一个值列表。一个输入标签只能取一个值。

【讨论】:

  • 女巫标签应该更好吧?我需要它就像一个标签或邮票,不管我是否必须做一个 foreach 但我不想要一个下拉菜单
  • 如果您不想要下拉菜单,您在寻找什么?
【解决方案3】:

我设法使用 boxlist 获得另一种方法,以下是代码以防有人需要它:

   @Html.ListBox("Group", (IEnumerable<SelectListItem>)ViewBag.Group)

【讨论】:

  • 即使这样也会呈现为select标签
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 2020-10-18
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
相关资源
最近更新 更多