2

好的,所以我正在尝试在我的网站中实现典型的图像上传功能。(我从没想过它会这么复杂!!!)我终于找到了一个使用jQuery-File-Upload插件的 AWESOME nuget 包( MvcFileUploader )。它工作得很棒,但我在弄清楚如何将它与我的实体相关联时遇到了一些麻烦。

上传文件时如何创建 Image 实体非常明显。但是,我有许多不同类型的实体,我想在图片上传后与它们相关联(例如新闻文章、博客文章、分类广告等)。

我目前设置它的方式是,我在页面右侧有一个文件上传器,在左侧有一个用于新闻发布的表单。文件上传器完成它的工作并上传文件,在此过程中创建图像实体。当我想将这些新的图像实体与我的新闻实体相关联时,就会出现问题。(请记住,在创建 Image 实体时,尚未创建任何新闻实体。)

想到的第一个解决方案是使用 AJAX 将隐藏字段粘贴到新闻项目表单中以表示新的图像实体 ID。然而,不幸的是,我似乎无法找到任何好的方法来完成这项工作,因为我无法轻松且易于理解地访问 MvcFileUploader 代码来尝试让它做这样的事情......而且它的工作原理如此好吧,现在我害怕把它搞砸。:) (这是一个缩小的 .js 文件。)(如果有人知道我可以如何轻松干净地做到这一点,而不会搞砸文件上传器插件,我很想听听。)

所以,我的下一个想法是我可以创建另一种类型的实体,其唯一目的是将图像和新闻项目连接在一起。我要做的是在输出表单时创建新实体(称为 XYZ)并在新闻项目表单和图像上传表单中放置一个隐藏字段(因为 mvcfileuploader 提供了将隐藏字段输出到表单中的功能与文件上传请求一起上传)。这些隐藏字段都将包含此特定新闻文章的 XYZ 实体的 ID。当我创建图像实体时,我会将其 ID 放在 XYZ 实体中,以等待新闻项目在创建时检索。我认为这可能有效,但感觉非常混乱。我不喜欢为了这个目的而拥有另一个实体的想法,在创建新闻项目之后(或者用户只是离开新闻项目创建页面),我的数据库中仍然会有这些实体。我必须定期清理它们或其他东西。

我还考虑过在输出创建页面时简单地制作新闻项目并将新闻项目 ID 输出到两种表单中......但是我将不得不放弃对新闻项目字段的任何类型的必填字段和其他限制,我会如果用户在完成之前离开页面,则有空的新闻项目。也很乱。

请有人帮忙:)。

4

1 回答 1

1

I would probably separate the views. The workflow might be for example:

  • News Create page without file uploader
  • The form gets posted to server and News created in database
  • Immediate Redirect to Details page for this News item with File uploader on right side
  • File Uploads are now always related to an existing item and can be associated with it

That's with the idea in mind that a News item makes sense without uploaded files, but an uploaded file doesn't make sense without News item. I don't know if that is a feasible assumption for your project.

For the user you could indicate on the Create page that he can upload files in a second step, like: "Please enter the information for this news item. Note: You can upload related files after the News has been created." Or so...

于 2013-05-18T13:18:38.837 回答