我的项目中有一个模型
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)