如何关联由单独表单生成的实体...而无法访问一个表单的代码

时间:2013-05-17 23:05:48

标签: asp.net entity-framework asp.net-mvc-4 jquery-file-upload asp.net-mvc-file-upload

好的,我正在尝试在我的网站上实现典型的图片上传功能。 (我从未想到它会如此复杂!!!)我终于找到了一个使用MvcFileUploader插件的真棒nuget包(jQuery-File-Upload)。它很棒,但我在弄清楚如何将它与我的实体联系起来时遇到了一些麻烦。

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

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

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

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

我还想到在输出创建页面时简单地制作新闻项目并将新闻项目ID输出到两种形式......但是我将不得不放弃任何类型的必填字段和新闻项目字段的其他约束如果用户在完成之前离开页面,我会有空的新闻项目。凌乱。

有人请帮忙:)。

1 个答案:

答案 0 :(得分:1)

我可能会分开观点。工作流程可能是:

  • News创建没有文件上传器的页面
  • 表单将发布到服务器并在数据库中创建News
  • 立即重定向到此News项目的详情页面,右侧有文件上传器
  • 文件上传现在始终与现有项目相关,并且可以与之关联

考虑到这个想法,News项在没有上传文件的情况下是有意义的,但如果没有新闻项,则上传的文件没有意义。我不知道这对你的项目是否是一个可行的假设。

对于用户,您可以在“创建”页面上指示他可以在第二步中上传文件,例如:“请输入此新闻项的信息。注意:您可以在News之后上传相关文件被创造了。“或者......