在视图中使用控制器变量.净MVC4



我的项目中有一个模型

using System;
namespace Argussite.SupplierServices.ViewModels
{
  public class UsersPage
  {
    public Guid SupplierId { get; set; }
    public string SupplierFullName { get; set; }
    public bool ActionsAllowed { get; set; }
  }
}

我在控制器中使用我的模型并设置属性

public ActionResult Index(Guid id)
    {
        var supplierOfUser = Context.Suppliers.AsNoTracking()
            //.Include(e => e.Supplier)
            .FirstOrDefault(e => e.Id == id);
        string SupplierId = id.ToString();
        string SupplierFullName = supplierOfUser.FullName.ToString();
        bool ActionsAllowed = supplierOfUser.Active;
        return View();
    }

然后我需要在视图中使用它,但我不知道如何在视图中获取属性?

首先,你的控制器动作需要像这样将模型实例发送给视图:

return View(supplierOfUser);

你需要这个在你的视图的顶部:

@model Argussite.SupplierServices.ViewModels.UsersPage

然后你所需要做的就是在你想在视图中使用你的模型的任何地方:do:

@Model.SupplierFullName

如果你想在视图中使用其他属性,你可以把它们放在一个动态的ViewBag变量中,像这样:

ViewBag.supplierOfUser = supplierOfUser.FullName.ToString();

然后在你的视图中你可以像这样使用这个值:

@ViewBag.supplierOfUser

创建一个新的UsersPage并将您已经拥有的属性分配给它的属性,然后将新创建的UsersPage传递给视图:

public ActionResult Index(Guid id)
    {
        var supplierOfUser = Context.Suppliers.AsNoTracking()
            //.Include(e => e.Supplier)
            .FirstOrDefault(e => e.Id == id);
        var usersPage = new UsersPage();
        usersPage.SupplierId = id.ToString();
        usersPage.SupplierFullName = supplierOfUser.FullName.ToString();
        usersPage.ActionsAllowed = supplierOfUser.Active;
        return View(usersPage);
    }

为了将控制器中的数据用于视图,您需要返回带有model In参数的视图:

return View(supplierOfUser);

在您的视图中,您还需要定义模型:

@model YourModel

注意,你不需要将供应商信息设置为其他变量(只需要supplierOfUser)。

最好的方法是在视图中建立强类型模型:

@model Argussite.SupplierServices.ViewModels.UsersPage

然后,只引用模型上的属性,例如

@Html.EditorFor(model => model.SupplierFullName)

很难用确切的代码来帮助你因为我不知道你想在视图上做什么,这是一个关于你应该如何在视图中传递和使用你的模型的一般想法

控制器

public ActionResult Index(Guid id)
{
    var supplierOfUser = Context.Suppliers.AsNoTracking()
        .FirstOrDefault(e => e.Id == id);
    var usersPage = new UsersPage
    {
        SupplierId = supplierOfUser.Id,
        SupplierFullName = supplierOfUser.FullName,
        ActionsAllowed = supplierOfUser.Active
    }
    return View(usersPage ); // <-- Send viewmodel to view
}
<<p> 视图/strong>
// Declare model
@model Argussite.SupplierServices.ViewModels.UsersPage
...
//Use your model here at will
@Html.DisplayFor(modelItem => item.FullName)
...
@Html.EditorFor(model => model.FullName)
@Html.ValidationMessageFor(model => model.FullName)

最新更新