gpt4 book ai didi

c# - 使用 HttpPostedFileBase 的强类型模型无法搭建 View

转载 作者:行者123 更新时间:2023-11-30 16:17:26 24 4
gpt4 key购买 nike

我希望有人能帮我解决这个问题。

我正在使用 VS 2012 和 MVC4。

我正在使用 HttpPostedFileBase 测试一个使用强类型模型的项目。当我尝试搭建 View 时,它失败了:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to retrieve metadata for 'ImageTest.Models.ImageHandler'. Value cannot be null.

Parameter name: key
---------------------------
OK
---------------------------

我曾尝试按照网上一些帖子的建议先卸载然后重新安装 MVC,但这并没有帮助。这是我的模型:(是的,我已经在 Id 上尝试了 [Key],但没有任何区别)

using System;
using System.Web;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace ImageTest.Models
{
public class ImageHandler
{
public int Id { get; set; }
public string ImageName { get; set; }
public HttpPostedFileBase File { get; set; }
}
}

我认为这可能是上下文问题,但无论我创建自定义上下文还是使用预定义上下文,我都会遇到相同的错误。这是预定义的上下文:

using ImageTest.Models;
using System.Data.Entity;

public class ImageHandlerContext : DbContext
{
public ImageHandlerContext() : base("DefaultConnection")
{
}

public DbSet<ImageHandler> ImageHandler { get; set; }
}

作为测试,如果我注释掉:

// public HttpPostedFileBase File { get; set; }

我可以毫无问题地构建 View 。这是一个错误吗?我在文档中看不到不支持脚手架 HttpPostedFileBase 的任何地方。请参阅:HttpPostedFileBase

提前致谢。

最佳答案

Stan 走在正确的道路上。

模型- View - Controller 或 MVC 使用 Entity Framework 来搭建 View 。

Entity Data Model: Primitive Data Types

除非定义了复杂数据类型,否则 .NET 4.5 目前支持原始数据类型。以下是受支持的原始数据类型:

Binary
Boolean
Byte
DateTime
DateTimeOffset
Decimal
Double
Float
Guid
Int16
Int32
Int64
SByte
String
Time

参见:Complex Type有关扩展此功能的更多信息。

谢谢 Stan 对我竖起大拇指。

编辑:首先需要使用原始数据类型 搭建 View ,然后将 HttpPostedFileBase 添加到模型中以使用文件上传功能。例如,请参见:Upload Image in form and show it on MVC 4

此外,您还需要在模型中使用 (NotMapped):

[NotMapped]
public HttpPostedFileBase File { get; set; }

现在,在脚手架创建 ActionResult 方法中,您的 View 的表单返回值包含一个您可以使用的 System.Web.HttpPostedFileWrapper。

如此简短的回答:

1: Create your Code First Model with Primitive Data Types only! Unless you use the [NotMapped] Attribute.
2: Scaffold your View's.
3: If not done so in step 1, Add to your Model the Methods needed. E.G: public HttpPostedFileBase File { get; set; } using the [NotMapped] Attribute
4: Add to your Database the necessary Table either manually or from the Console.
5: Add the necessary code to your View's and Controller.

这应该足以让你工作......

关于c# - 使用 HttpPostedFileBase 的强类型模型无法搭建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17159529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com