Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据发送到视图?_C#_Asp.net_Model View Controller_Razor - Fatal编程技术网

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