0

我的项目中有一个模型

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();
    }

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

4

5 回答 5

2

首先,您的控制器操作需要将该模型实例发送到视图,如下所示:

return View(supplierOfUser);

您需要在视图顶部使用它:

@model Argussite.SupplierServices.ViewModels.UsersPage

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

@Model.SupplierFullName

如果要在视图中使用其他属性,可以将它们放入动态 ViewBag 变量中,如下所示:

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

然后在您看来,您可以像这样使用此值:

@ViewBag.supplierOfUser
于 2013-06-17T12:47:05.847 回答
1

创建一个新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);
    }
于 2013-06-17T12:46:33.027 回答
1

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

@model Argussite.SupplierServices.ViewModels.UsersPage

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

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

于 2013-06-17T12:48:38.033 回答
1

很难为您提供确切的代码,因为我不知道您想在视图上做什么,这是您应该如何在视图中传递和使用模型的一般概念

控制器

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
}

看法

// 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)
于 2013-06-17T12:46:16.280 回答
1

为了使用从控制器到视图的数据,您需要在参数中返回带有模型的视图:

return View(supplierOfUser);

在您看来,您还需要定义模型:

@model YourModel

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

于 2013-06-17T12:46:26.530 回答