【问题标题】:ASP.NET MVC - File Uploading and Model BindingASP.NET MVC - 文件上传和模型绑定
【发布时间】:2010-01-27 22:30:09
【问题描述】:

我正在建立一个征文比赛页面。文章可以写入文本区域或上传。我是 asp.net mvc 的新手,并且一直在关注 Sanderson 的 Pro ASP.NET MVC 框架。

由于字段验证失败,我无法在往返过程中维护已发布的文件。

阅读this 我将输入文件命名为与模型字段名称相同,并将其作为输入传递给控制器​​操作:

[AcceptVerbs(HttpVerbs.Post)]
public ViewResult SubmitEssay(Essay essay, bool acceptsTerms,
    HttpPostedFileBase essay_filepath,
    HttpPostedFileBase budget_filepath)
{
    if (!acceptsTerms)
        ModelState.AddModelError("acceptsTerms", 
                                 "You must accept the terms and conditions.");
    else
    {
        try
        {
            // stuff uploaded file values
            if (string.IsNullOrEmpty(essay.essay_filepath) 
                   && (essay_filepath!= null))
            {
                essay.essay_filepath = essay_filepath.FileName;
            }

            if (string.IsNullOrEmpty(essay.budget_filepath) 
                   && (budget_filepath != null))
            {
                essay.budget_filepath = budget_filepath.FileName;
            }

这本身是有效的,但是当我去验证其他字段时,文件上传字段在往返时不再包含上传路径,这样当我重新提交时,填写必填字段后,没有发布的文件。

通过往返维护已发布文件的最佳方式是什么?您甚至可以设置 字段的“值”吗?我应该使用两个字段(一个隐藏)并使用 jQuery 设置文件输入字段吗?

其他人做了什么?

谢谢。

【问题讨论】:

  • 是的,我想我应该只添加一条说明存在错误的注释,因此需要再次选择输入文件。
  • 并且可能会添加一些客户端 JS 验证器以防止提交,除非所有必填字段都已填写..
  • 是的,我实际上是在设置业务层保护之后才这样做的。我昨晚读到了关于下一个版本的 asp.net mvc 将如何允许使用相同的代码行进行业务层和 javascript 验证。 (也许现在这也是可能的,只是我对此了解不够。)

标签: asp.net-mvc


【解决方案1】:

答案是,正如您在 cmets 中看到的那样,我什至不应该尝试这样做。相反,我将添加一个 ValidationMessage 说明由于存在错误,因此必须再次选择该文件。

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多