【问题标题】:Accessing viewdata object in view在视图中访问 viewdata 对象
【发布时间】:2015-09-25 22:48:07
【问题描述】:

开始接触 MVC ASP.NET,潜力无限。我有点卡住了,想知道是否有人可以建议。

所以我想出了如何将类型对象捆绑到视图数据中,然后在视图中访问它们。

所以在视图中我选择了我的 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 字段,它实际上需要“viewDataMyObj.myVar”并将其作为 ID,而不是 myVar 的内容,即“hello”。我肯定在这里缺乏一点知识,如果有任何建议,我将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    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" })
    

    您可以看到DropDownListForx.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" })
    

    【讨论】:

    • 您不能在同一个视图中使用多个模型。根据您的评论,我假设您不了解 MVC 的工作原理,我建议您阅读有关 MVC 概念的一般信息,特别是有关 ASP.NET MVC 的信息。还有一件重要的事情:所有可以用 Web 表单完成的事情都可以用 MVC 完成。 MVC 是一种模式,可让您构建代码,使其更易于维护
    • 那些不是模型!!!!这些只是类。视图只能有一个模型。您需要在视图中指定它@model Namespace.Models.Modelname2
    【解决方案2】:

    在创建 ID 时尝试myVar.Value

    为我工作...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2014-08-01
      • 1970-01-01
      相关资源
      最近更新 更多