在c#中使用模型而不需要数据库

本文关键字:不需要 数据库 模型 | 更新日期: 2023-09-27 18:04:41

我对c#和ASP比较陌生。. NET MVC 5,但我希望一些帮助。我有一个应用程序,我有一个类,大约有20个变量。它有一些Guid,一些List<string>, int, string等,相对简单。我的控制器将被传递这个类,然后我需要将数据从类发送到视图,然后通过表单提交将其返回给控制器。我到处都看到关于如何使用实体框架模型的教程,但我没有找到任何关于使用没有数据库的模型的教程。是否有可能(如果有的话,如何)在没有数据库的情况下使用模型?如果这是不可能的,我还可以用什么方法来使用它?我考虑过一个会话变量,但似乎每个用户都有很多开销,我在这里有点难住了。提前感谢:)

在c#中使用模型而不需要数据库

这是一个如何在MVC中使用模型的例子…

控制器

public class ExampleController : Controller
{
    public ActionResult Test()
    {
        TestViewModel model = new TestViewModel
        {
            Id = Guid.NewGuid().ToString(),
            Name = "Foo bar"
        };
        return this.View(model);
    }
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Test(TestViewModel model)
    {
        if (!this.ModelState.IsValid)
        {
            return this.View(model);
        }
        return this.Content("Success");
    }
}

View Model

public class TestViewModel
{
    [Required]
    public string Id { get; set; }
    [Required]
    public string Name { get; set; }
}

@model TestViewModel
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (this.Html.BeginForm())
{
    @(this.Html.ValidationSummary(false))
    @(this.Html.AntiForgeryToken())
    @(this.Html.EditorFor(model => model.Id))
    @(this.Html.ValidationMessageFor(model => model.Id))
    @(this.Html.EditorFor(model => model.Name))
    @(this.Html.ValidationMessageFor(model => model.Name))
    <input type="submit" value="Submit!"/>
}

默认情况下,MVC也会根据简单的命名约定生成路由表,在本例中,导航到http://yoursite/example/test查看实际示例

您不需要数据库来拥有模型。模型只定义要来回传递的数据,因此数据库绝对不是必需的。实际上,理想情况下,模型应该与数据库无关。例如,您可能有一个CustomerOrder模型和一个Product模型。

public class CustomerOrder
{
    public int Id {get; set;}
    public List<Product> Products {get; set;}
    public int CustomerId {get; set;}
}
public class Product
{
    public int Id {get; set;}
    public string Name {get; set;}
    public string Description {get; set;}
    public double Price {get; set;}
}

您可能需要某种类型的数据存储(平面文件,关系数据库,非关系数据库,基于web的存储),但取决于您想要传递的数据,它来自任何地方

mvc模型是纯c#对象,用于在控制器和视图之间传递信息。所以你可以独立于数据库使用它们。如果以后需要将信息持久化,可以先使用EntityFramework代码,或者将它们序列化到平面文件中。