ASP.NET - MVC 4使用从控制器到视图的变量

本文关键字:控制器 视图 变量 NET MVC ASP | 更新日期: 2023-09-27 18:12:38

我有一个这样的控制器:

public class PreviewController : Controller
{
    // GET: Preview
    public ActionResult Index()
    {
        string name = Request.Form["name"];
        string rendering = Request.Form["rendering"];
        var information = new InformationClass();
        information.name = name;
        information.rendering = rendering;
        return View(information);
    }
}

,在视图中,我试图像这样输入information.name:

@ViewBag.information.name

我也试过了:

@information.name

,但得到相同的错误:

不能对空引用执行运行时绑定

我做错了什么?

ASP.NET - MVC 4使用从控制器到视图的变量

必须在视图中使用@Model.name。不是@ViewBag.information.name。同样,在视图的顶部,你必须定义如下内容:

@model Mynamespace.InformationClass

使用MVC的模型绑定特性会更好。因此,像这样改变你的动作方法:

public class PreviewController : Controller
{
    [HttpPost] // it seems you are using post method
    public ActionResult Index(string name, string rendering)
    {
        var information = new InformationClass();
        information.name = name;
        information.rendering = rendering;
        return View(information);
    }
}

在视图中输入

@Model.name

由于InformationClass是你的模型,你只需使用@Model

从视图调用它的属性

您需要在您的动作中设置ViewBag.InformationName:

ViewBag.InformationName = name;

然后在视图中你可以引用它:

@ViewBag.InformationName

或者如果你试图在视图中使用模型数据,你可以通过以下方式引用它:

@Model.name

请将该示例添加到视图文件

   @model Your.Namespace.InformationClass

那一行负责定义您的模型类型。之后你可以使用:

   @Model.name;