在视图

时间:2015-09-25 09:31:14

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

进入MVC ASP.NET,激发潜力。我有点陷入困境,想知道是否可以提出建议。

所以我已经研究了如何将类型对象捆绑到viewdata中,然后在视图中访问它们。

所以在视图中我拿起我的viewdata对象并将其分配给相应的类型。

    @using MyPro.Models;
    @{
      var viewDataMyObj = ViewData["MyObj"] as MyObj;
    }

然后我进一步向下搜索并成功访问我的{get,set}并填充DropDownListFor ...

  @Html.DropDownListFor(x => viewDataMyObj.myVar, new      SelectList((IEnumerable<SelectListItem>)viewDataMyObj.mySel.OrderBy(c => c.Value), "Value", "Text", "Select All"), new { @Class = "form-control" })

所以mySel在我的模型中并且有效。它是字符串myVar,我不能将其指定为id字段,它实际上需要&#34; viewDataMyObj.myVar&#34;并将其作为ID,而不是myVar的内容,即#34;你好&#34;。我在这里肯定缺乏一点知识,并会对任何建议表示感谢。

2 个答案:

答案 0 :(得分:0)

Html.DropDownListFor应该仅适用于您的模型。因此将其应用于viewDataMyObj.myVar无法奏效。 从您显示的代码中,没有任何证据表明您的视图具有模型(不要将usingmodel混淆) 假设您的视图应该与MyObj模型一起使用,并且MyObj具有myVar属性,该属性应该从下拉列表填充,这应该有效:

@model MyPro.Models.MyObj
@{
    var viewDataMyObj = ViewData["MyObj"] as MyObj;
 }

 @Html.DropDownListFor(x => x.myVar, new SelectList((IEnumerable<SelectListItem>)viewDataMyObj.mySel.OrderBy(c => c.Value), "Value", "Text", "Select All"), new { @Class = "form-control" })

您可以看到DropDownListFor适用于x.myVar,这是您模型的属性,而不适用于viewDataMyObj.myVar

除此之外,如果您的模型是MyObj并且它还包含填充您的下拉列表的数据,则您不需要全部使用ViewData广告:

@Html.DropDownListFor(
    x => x.myVar, 
    Model.mySel.OrderBy(c => c.Value)
      .Select(c => new SelectListItem{Value = c.Value, Text = c.Text}),     
   "Select All", 
   new { @Class = "form-control" })

答案 1 :(得分:0)

创建ID时尝试myVar.Value

为我工作......