【问题标题】:How to pass a variables data from a controller to a view (MVC)如何将变量数据从控制器传递到视图(MVC)
【发布时间】:2020-04-20 11:46:23
【问题描述】:

目前我已经在我的模型中定义了一些变量,然后我在相应的控制器中为其分配了值。然后我希望这些分配的值被我视图中的变量使用,但是我不确定我需要做什么才能实现这一点......

下面是我的班级模型;

 public class Category
    {
       public string result { get; set; }

       public Array userData { get; set; }

    }

接下来是控制器,我在其中为上述声明的变量赋值;

 [HttpPost]
        public ActionResult ReadCategory()
        {
            var dataFile = Server.MapPath("~/App_Data/Category.txt");

            Category passCategory = new Category
            {
                result = "",
                delimiterChar = { ',' },
                userData = System.IO.File.ReadAllLines(dataFile)
            };

            return View(passCategory);
        }

最后我想在我的视图中使用上面分配的变量。尽管无论出于何种原因,变量都会出现错误“当前上下文中不存在名称'variableName'”。

查看代码如下:

 @using (Html.BeginForm("ReadCategory", "Index", FormMethod.Post))
    {
        <div class="categoryList">

            @result
            @if (result == "")
            {
                foreach (String dataLine in userData)
                {

                    <p>
                        <a data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">

                            @dataLine.Split(delimiterChar)[0]
                        </a>

                        <button class="btn" id="@dataLine.Split(delimiterChar)[1]"><i class="fas fa-plus secondaryPlusIcon" id="@dataLine.Split(delimiterChar)[1]"></i></button>
                        <button class="btn" id="@dataLine.Split(delimiterChar)[1]"><i class="far fa-edit secondaryEditIcon" id="@dataLine.Split(delimiterChar)[1]"></i></button>
                        <button class="btn" id="@dataLine.Split(delimiterChar)[1]"><i class="far fa-trash-alt secondaryDeleteIcon" id="@dataLine.Split(delimiterChar)[1]"></i></button>
                    </p>

                    <div class="collapse" id="collapseExample">
                        <div class="card card-body w-25 p-3 collapsible">
                            @dataLine.Split(delimiterChar)[1] / Sub-category <!-- The ID value (Value after the delimiter) This ID value is associated to each category listed above-->
                        </div>
                    </div>

                }

            }
        </div>
    }

(视图中的大部分代码是不必要的,但是我想特别关注变量:“result”、“userData”和“delimiterChar”)~这些变量会引发上述错误。

注意:我目前在视图中使用命名空间;

@using projectName.Models

@model IEnumerable

我显然在这里遗漏了一些东西,我对 MVC 非常陌生,非常感谢您提供解决此问题的任何指导,谢谢 :)

【问题讨论】:

  • 您的 ReadCategory 方法看起来应该是 [HttpGet] 而不是 [HttpPost]
  • 在您的情况下,您应该能够简单地将模型与@model proper.namespace.Category 一起使用,然后在视图中只需执行@Model.userData 即可访问您的视图数据
  • 试试@model 类别
  • 你应该使用你的模型@model ...Category

标签: c# asp.net-mvc model-view-controller


【解决方案1】:

使用页面指令将Category(如果需要,使用适当的命名空间)设置为视图中的模型

@model Category

那么你应该使用Model.result而不是result

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多