C# 如何将数据发送到视图?
我有表,我可以向其中发送数据,一切都设置好了,现在我只需要了解如何将数据发送到视图。当我想使用C# 如何将数据发送到视图?,c#,asp.net,model-view-controller,razor,C#,Asp.net,Model View Controller,Razor,我有表,我可以向其中发送数据,一切都设置好了,现在我只需要了解如何将数据发送到视图。当我想使用Modelword获取数据时,我得到的错误是:NullReferenceException:objectreference未设置为对象的实例 index.cshtml @model FaqVM @{ Layout = "_Layout"; } @Model.MainCategoryTitle // Error Faq.cs public class Faq : CanBeLocalized,
Model
word获取数据时,我得到的错误是:NullReferenceException:objectreference未设置为对象的实例
index.cshtml
@model FaqVM
@{
Layout = "_Layout";
}
@Model.MainCategoryTitle // Error
Faq.cs
public class Faq : CanBeLocalized, IHaveIntegerId, ICanProvideCreatedTime, IHaveConcurrencyToken
{
public int Id { get; set; }
[Localize] public string MainCategoryTitle { get; set; }
public DateTime Created { get; set; } = DateTime.Now;
public string ConcurrencyToken { get; set; }
public DateTime? Disabled { get; set; }
public int SOrder { get; set; } = 0;
public DateTime? Updated { get; set; }
public ICollection<FaqSubcategory> FaqSubcategories { get; set; } = new HashSet<FaqSubcategory>();
}
public class FaqVM
{
public string MainCategoryTitle { get; set; }
public List<FaqSubcategory> FaqSubcategories { get; set; }
}
公共类常见问题解答:CanBeLocalized、IHaveIntegerId、iCanProviderCreatedTime、IHaveConcurrencyToken
{
公共int Id{get;set;}
[Localize]公共字符串MainCategoryTitle{get;set;}
创建的公共日期时间{get;set;}=DateTime.Now;
公共字符串并发肯{get;set;}
公共日期时间?已禁用{get;set;}
公共整数排序器{get;set;}=0;
公共日期时间?已更新{get;set;}
公共ICollection子类别{get;set;}=new HashSet();
}
FaqVM.cs
public class Faq : CanBeLocalized, IHaveIntegerId, ICanProvideCreatedTime, IHaveConcurrencyToken
{
public int Id { get; set; }
[Localize] public string MainCategoryTitle { get; set; }
public DateTime Created { get; set; } = DateTime.Now;
public string ConcurrencyToken { get; set; }
public DateTime? Disabled { get; set; }
public int SOrder { get; set; } = 0;
public DateTime? Updated { get; set; }
public ICollection<FaqSubcategory> FaqSubcategories { get; set; } = new HashSet<FaqSubcategory>();
}
public class FaqVM
{
public string MainCategoryTitle { get; set; }
public List<FaqSubcategory> FaqSubcategories { get; set; }
}
public类常见问题解答
{
公共字符串MainCategoryTitle{get;set;}
公共列表子类别{get;set;}
}
公共类CMS控制器:控制器
{
受保护的ILocale\u语言环境;
受保护的ICacheManager\u cacheManager;
受保护区域提供者_RegionProvider;
受保护的IViewRenderService _viewRenderService;
私人IServiceProvider_服务提供商;
//...
}
公共类FAQ控制器:CmsController
{
私人只读常见问题解答\u常见问题解答;
公共控制器(
RegionProvider RegionProvider,
iCaleAccessor localeAccessor,
ILiteralProvider literalProvider,
CartRepo CartRepo,
IServiceProvider服务提供商,
常见问题解答(Faq):基本(服务提供商)
{
_常见问题=常见问题;
}
公共异步任务索引()
{
var vm=新的常见问题解答vm
{
MainCategoryTitle=\u faq.MainCategoryTitle,
FaqSubcategories=\u faq.FaqSubcategories.ToList()
};
返回视图(vm);
}
}
在FAQ控制器的Index()方法中,您需要将ViewModel创建为fx
var vm = new FaqVM(){
MainCategoryTitle = "test",
FaqSubcategories = new List<FaqSubcategory>(){ new FaqSubcategory() }
}
通常,您会从数据库中的一些数据或用户输入创建vm。那么,FaqVM.cs是您的控制器吗?如果您试图构建一个MVC项目(而不是Razor Pages)项目,那么您的控制器设置不正确@ShahriarRahmanZahin否,FaqVM是ViewModel,添加了控制器代码CmsController包含哪些内容?此外,您必须像下面这样从控制器传递模型:“返回视图(模型);”。否则您将无法在视图中找到模型谢谢,我更新了代码
CmsController
源于Controller
类,包含许多类的一些通用功能。现在,当我发送模型时,出现错误:在尝试激活“Bs.WebApp.Controllers.FaqController”时,无法解析类型“Bs.WebApp.Models.Faq”的服务。因此,既然您将vm作为模型发送,请更新您的视图以接收vm,而不是FaqVM