ASP.NET MVC3 从部分视图上传文件(并填充模型中的相应字段)

2024-04-14

我知道这个话题已经讨论过 https://stackoverflow.com/questions/13788372/asp-net-mvc-ajax-file-upload-with-partialviews在 SO 和其他地方,但我找不到我的问题的任何答案。

我正在开发一个 ASP.NET MVC3 项目,我想创建一个局部视图含有一个FileUpload。该部分视图称为基本视图Create页面,我希望要上传的文件属于要创建的模型。仅当用户提交表单时,才会上传所选文件。

这是代码的解释:


Model ModelToCreate

public class ModelToCreate
{
    //Some properties

    public FileUploadModel Files { get; set; }
}


Model FileUploadModel

public class FileUploadModel
{
    public IEnumerable<HttpPostedFileBase> Files { get; set; }
}


我的 PartialView (_UploadFiles.cshtml)

@model Models.ModelToCreate

//I tried with Html.BeginForm(Create, MyController instead of null, null, but with no result.
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.TextBoxFor(m => m.Files, new { type = "file", name = "Files" })
}


分部视图如何调用(通过Create.cshtml)

@Html.Partial("_UploadFiles")

我也尝试过@Html.Partial("_UploadFiles", Model),但没有结果...

当我点击Submit按钮进入Create.cshtml,表单已提交给我的控制器但是Files场永远是null而其他数据都OK。

我错过了什么吗?你能指出我在哪里(以及为什么?)
谢谢 !



更新(和解决方案)

这是我忘记的一些附加信息Create.cshtml表格如下所示:

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "target-form" }))
{
    // Some fields, Textboxes and others CheckBoxes

    //Call to partial View
}

当我查看生成的源代码时,我看到了部分视图<form>标签...所以我有一个<tag> in a <tag>,这是非法的并且被“忽略”。这会导致问题

SOLUTION只需将此标签添加到 BeginForm 中即可Create.cshtml :

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "target-form", enctype = "multipart/form-data" }))

并将我的部分视图称为

@Html.Partial("_UploadFiles", Model)

好的,这会让它为你工作。

Create.cshtml查看(将表单和提交移到部分之外)

@using(Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
   @Html.Partial("_UploadFiles", Model)
   <input type="submit" value="submit" />
}

_UploadFiles.cshtml view

@model ModelToCreate

@Html.TextBoxFor(m => m.Files.Files, new { type = "file", name = "Files" })

模型(更改为列表,并注意初始化器中FileUploadModel构造函数)。

public class ModelToCreate
{
    //Some properties
    public FileUploadModel Files { get; set; }
}

public class FileUploadModel
{
   public FileUploadModel()
   {
        Files = new List<HttpPostedFileBase>();
   }

   public List<HttpPostedFileBase> Files { get; set; }
}

控制器动作:

public ActionResult Create()
{
    var model = new ModelToCreate();

    return View(model);

}

[HttpPost]
public ActionResult Create(ModelToCreate model)
{
   var file = model.Files.Files[0];
   return View(model);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC3 从部分视图上传文件(并填充模型中的相应字段) 的相关文章

  • Microsoft Graph API 授权错误:无效受众

    我知道这是一个很长的问题 但如果有人能与我分享他们的想法或经验 我真的很感激 因为我已经解决这个问题几天了 现在正在尝试很多事情 我有一个 ASP Net Core 3 1 Web API 应用程序和一个 ASP NET Core 3 1
  • 如何解决“HTTP 错误 404.3 - 未找到”错误?

    简单的问题 我启动 VS2008 并创建一个新的 WCF 服务应用程序 这将创建一个默认应用程序 并使用一些测试方法来显示它的工作原理 我按 CTRL F5 确实有效 伟大的 但是 它使用 Visual Studio 开发服务器 我不想支持
  • Lambda、封闭变量、显示类、可序列化性和流行层

    我已经为 Compact Framework 实现了一个流行层 包括BinaryFormatter 类似序列化器 我希望能够在适当的情况下序列化编译器生成的类 这些类是由 lambda 和迭代器等产生的 这样如果 例如 lambda 及其封
  • F1 2019 UDP解码

    我目前正在为 F1 方向盘开发自己的显示器 F1 2019 由codemasters提供 通过UDP发送数据 该数据存储在字节数组中 我在解码返回的数组时遇到一些问题 问题是我得到了很多信息 但我不知道如何处理它们 我将向您介绍我所尝试过的
  • 如何在 Xamarin.Forms 中强制使用浅色模式?

    我的应用程序的 UI 设计为在灯光模式下使用 但如果手机的默认主题是深色模式 我的应用程序也会切换到深色模式 并且 UI 看起来很垃圾 所以我想强制我的应用程序使用灯光模式 我怎样才能做到这一点 In my app xaml我使用的文件Us
  • Qml 中的 FileDialog 在发布中不起作用

    我正在与以下项目合作Qt Quick Control 2 当我尝试在调试模式下运行软件时 FileDialog qml 可以完美打开 但是当我将其部署为发布模式时 它无法工作 这是我的代码 import QtQuick 2 4 import
  • 以 ASCII 字符串形式获取 MemoryStream 内容的快速方法

    我在 MemoryStream 中有一个 JSON 字符串 我使用以下代码将其作为 ASCII 字符串获取 MemoryStream memstream new MemoryStream Write a JSON string to mem
  • JObject ToString 与 StringEnumConverter 不起作用

    我正在尝试序列化一个匿名类 如下所示 public enum ErrorCode A B C var response JObject FromObject new Error new Message Test Code ErrorCode
  • C# 中的异步方法如何工作?

    我在我的一些项目中使用异步方法 我喜欢它 因为它使我的应用程序更具可扩展性 但是 我想知道异步方法如何在后台真正工作 NET 或 Windows 如何知道调用已完成 根据我进行的异步调用的数量 我可以看到创建了新线程 但并不总是 为什么 此
  • 这个对象的内存会是什么样子?

    我想知道这个类 它的对象 的内存布局是什么样的 class MyClass string myString int myInt public MyClass string str int i myString str myInt i MyC
  • C++ 中的静态虚函数

    我有一个基类和一个派生类 我想更改基函数 同时保持它们静态 因为它们应该作为静态传递给其他函数 我怎样才能做到这一点 ATL 框架通过将基类设为模板 然后让派生类将其类类型作为模板参数传递 从而绕过了无虚拟静态的限制 然后 基类可以在需要时
  • 将 size_t 变量添加到指针

    我想向指针添加 size t 类型 有些像这样 void function size t sizeA size t sizeB void pointer pointer malloc sizeA pointer pointer sizeB
  • 委托:方法名称预期错误

    我正在尝试让以下简单的委托示例正常工作 根据我从中取出的一本书 应该没问题 但我得到了Method name expected error namespace TestConsoleApp class Program private del
  • 更改子进程中的 iostream

    现在 我正在开发一个项目 其中我需要启动一个子进程来使用 C 在 Linux 中执行一个新程序 并且我需要重定向标准输入和输出 就像在 C 中一样 它们是cin and cout 到一个文件 这意味着在子进程中 标准输入和输出都是文件 子进
  • 使用 Entity Framework Core 在运行时迁移

    我正在将 PHP Illuminate 应用程序移植到 ASP NET Core EF Core 其中一部分由类似 Wordpress 的安装过程组成 该过程要求提供数据库凭据 然后创建应用程序运行所需的表 本质上 我想在运行时运行某种迁移
  • LINQ 中的左外连接

    下面的代码不断给我一个错误消息 你调用的对象是空的 var partsWithDefaults from partsList1 in p join partsList2 in d on new PartNo partsList1 PartN
  • GridView,在代码中添加标题行第 2 部分

    这是这篇文章的延续 但添加了完整的代码 ASP NET GridView 在代码中添加标题行 https stackoverflow com questions 19119004 asp net gridview adding header
  • 虚拟键盘(类似 Swype 键盘)Windows 窗体应用程序 C#

    我正在尝试使用 c 在 Windows 窗体中创建一个类似 swype 的键盘 我有两个问题 A 我无法重现手指滑动动作 b 我无法识别不同按键下的字母 对于第一个问题 我使用了 Graphics 类和 Pen 类 并像这样使用它 bool
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 如何在 C++ 中打印变量的名称? [复制]

    这个问题在这里已经有答案了 可能的重复 在C中获取变量名称的编程方法 https stackoverflow com questions 1623111 programmatic way to get variable name in c

随机推荐

  • Chrome 屏幕截图仅在首先单击扩展程序时有效

    因此 我尝试编写一些代码 以便在按下我的网站上的按钮时可以截取页面的屏幕截图 代码可以工作 但唯一的问题是我必须先单击 chrome 扩展 然后才能单击按钮来截取屏幕截图 我猜这是因为活动选项卡未被调用 有任何想法吗 这是错误消息 运行 t
  • C# 如何将整型的项隐式转换为 double 的项?

    是否有任何 C 规范说明如何隐式转换整型类型的项 例如 int 的条款double应该可以工作吗 如果是这样 有人可以告诉我算法或指导我吗 C 6 0 规范草案 https learn microsoft com en us dotnet
  • 你能在 C 中#define 注释吗?

    我正在尝试做一个调试系统 但它似乎不起作用 我想要完成的是这样的 ifndef DEBUG define printd else define printd printf endif 有没有办法做到这一点 我有很多调试消息 但我不喜欢这样做
  • 编写一个简单的自定义编辑器需要多快?

    简单地说 我的意思是有按钮 bold italic 编号列表 要点列表 向左缩进 右缩进 拼写检查 显然由现成的 js 组件支持 我所说的自定义是指 拥有自定义图标 所以实际上只是自定义设计 无框架 从头开始编写 轻量级 兼容主流浏览器 这
  • ViewChild 与输入/输出 - Angular 最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我看来 几乎在所有我们指定组件的情况下 Inputs Output我们也可以没有任何 Inputs Outputs 而是使用 ViewChil
  • PySpark 将列除以其总和[重复]

    这个问题在这里已经有答案了 我试图将 PySpark 中的列除以它们各自的总和 我的数据框 此处仅使用一列 如下所示 event rates 1 10 461016949152542 2 10 38953488372093 3 10 609
  • heroku 应用程序在推送后仍然引用旧文件

    我最近在 Heroku 中遇到了这个非常奇怪的问题 我在本地开发和测试 然后将更改推送到 Heroku 尽管推送的文件已经更改 Heroku 确实识别了它并推送了新文件 但当我查看 Heroku 上的确切网页时 它的行为就好像它仍在使用我刚
  • 在 Xamarin iOS 中使用 Firebase Crashlytics

    任何人都可以帮助我如何使用适用于 Xamarin iOS 的 Xamarin Firebase iOS Crashlytics nuget 包 我的代码中随机出现 SIGSEGV 代码错误 但我无法找出实际问题 已经搜索了很多关于如何在 X
  • 如何在java swing中为某个类型的所有组件设置UI?

    我创建了自己的MyScrollbarUI类在我的应用程序中具有自定义滚动条外观 现在我必须做 scrollPane getHorizontalScrollBar setUI new MyScrollbarUI scrollPane getV
  • 用于渲染大量数据的表格设计 Angular

    我是角度新手 期待创建一个将呈现大量数据的表 下面是我试图实现的表中的功能 有人可以指导如何解决这个问题吗 有没有实现它的开源项目 或者好的资源 通用搜索按钮可在所有列中搜索并在表格中显示结果 用户可以显示和隐藏某些列 选定列上的预填充过滤
  • 仅 CSS 视差滚动停止在 IOS/IPadOS 13 上工作?

    好吧 我在网络开发领域还是个新手 几个月前 我仅使用 CSS 视差滚动完成了自己的网站 iOS13 出现了一些问题 对于视差效果 我使用了描述基思 克拉克 https keithclark co uk articles pure css p
  • 拖动 Vuetify v-data-table 中的列

    我想在 v data table 中通过标题拖动列 我已经使用指令 sortablejs 取得了很大的进展 但我无法弄清楚以下内容 我不确定当 列数与 列数不匹配时如何解释 使用 colspan someNumber 时可能会发生这种情况
  • 如何从 youtube-dl --write-auto-sub 下载转换混乱的 .vtt 子文件?

    我的目标是在单独的文件中下载带有自动生成字幕的 YouTube 视频 例如 vtt srt etc 我目前正在努力实现这一目标youtube dl但如果需要的话 我愿意接受其他解决方案 当我运行以下命令时 它将视频下载为 mp4 这很好 和
  • 没有父母的反复无常的修订意味着什么?

    我有一个 Mercurial 存储库 现在处于奇怪的状态 这就是 TortoiseHG 中的样子 我认为这是不可能的 修订版 54 的父级为 1 000000000000 即无 显然 我对 Mercurial 还有些不明白 任何人都可以让我
  • 在 Dart 中将类型化函数作为参数传递

    我知道Function https api dartlang org stable 1 22 1 dart core Function class html类可以作为参数传递给另一个函数 如下所示 void doSomething Func
  • 为什么 map() 会掩盖“未定义值”错误?

    我想知道为什么要打电话给map第二个片段中的 未定义值 错误消失了吗 use strict use warnings my x my a x error Can t use an undefined value as an ARRAY re
  • 命名空间中不存在名称

    我正在使用 VS 2015 中的数据模板绑定开发一个简单的 UWP 项目 每当我尝试指定数据模板的类型时 都会收到错误 XAML
  • 如何在 Dapper 查询中转义“@”?

    我有一个查询应该包含文字 at 符号 我如何用 Dapper 查询来表达这一点 var num cnx Query
  • 链接 boost 日志时出现链接器错误(对 boost::log::v2_mt_posix::sinks 的未定义引用)

    我正在尝试编译一个程序 该程序在 Ubuntu 上使用 boost 库 但出现错误 stepan stepan System Product Name dev g std c 11 Wall pedantic g O0 DBOOST LOG
  • ASP.NET MVC3 从部分视图上传文件(并填充模型中的相应字段)

    我知道这个话题已经讨论过 https stackoverflow com questions 13788372 asp net mvc ajax file upload with partialviews在 SO 和其他地方 但我找不到我的