0

我有一个发布 3 条信息的表格。

  • 配方模型
  • 标签字段(字符串)
  • 文件(类型文件的输入)

在控制器端,我收到如下信息:

[HttpPost]
[Authorize]
public ActionResult Create(Recipe recipe, string taglist, HttpPostedFileBase file)
{
     if (ModelState.IsValid)
     { ...

在控制器中,我验证了上传文件和 taglist 上的一些信息。如果出现问题,我会像这样返回创建视图

ModelState.AddModelError("", "You must provide at least one tag");
return View(recipe);

问题是用户提供的信息(要上传的文件或标签)在此过程中丢失。自从我将它们传递给视图以来,食谱中的所有字段都仍然存在。我不想丢失任何信息。

我该如何处理?什么是最好的方法?我已经考虑创建一个特殊模型,该模型将通过添加标签字符串来包装我的食谱模型,但我不知道如何处理文件的情况,因为它不是字符串。

任何帮助将不胜感激

附加信息:标签字符串不在配方模型中,因为标签不是数据库中的字符串,它们是附加到配方的标签列表。由于我使用的是一个需要字符串的 jQuery 插件,所以我这样做了,在控制器中我拆分了标签字符串并将它们添加到数据库中。

4

1 回答 1

1

使用包含所有信息的视图模型。在最简单的形式中,它可能看起来像:

public class RecipeViewModel()
{
    public RecipeViewModel()
    {
        Recipe = new Recipe();
    }

    public Recipe Recipe { get; set; }
    public string TagList { get; set; }
    public HttpPostedFileBase File { get; set; }
}

然后,将此模型用于您的操作和视图:

public ActionResult Create(RecipeViewModel model)
{
    ...
}
于 2013-04-03T21:25:38.030 回答