首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageProcessor请求使未来的列表绑定失败

ImageProcessor请求使未来的列表绑定失败
EN

Stack Overflow用户
提问于 2015-12-25 16:54:05
回答 1查看 124关注 0票数 1

我正在努力解决我的站点的一个问题,如果我使用ImageProcessor.Web向一个映像发出请求,它会阻止一些未来的List<>绑定请求的工作。

我不确定这是一个bug,还是一个配置问题,但我一直在努力找出它的真相。

我已经剥离了我的整个网站回到一个解决方案,只是为了演示这个绑定问题。

我已经将测试应用程序定位在我的S3:https://s3.amazonaws.com/bindingissue/BindingIssue.zip中的以下地址

如果打开应用程序,运行网站项目并导航到https://localhost:44300/,它将显示以下表单:

如果您提交了表单,您将看到该页指示文本框中的值已被绑定,并且提交的值出现在窗体中。

表单元素的名称是FilledInValues[0],它将值绑定到名为FilledInValues的控制器操作中的变量,该变量的类型为List<string>

代码语言:javascript
复制
[HttpPost]
public ActionResult Index(TestViewModel requestResponseModel)
{
    if (requestResponseModel.FilledInValues != null && !string.IsNullOrWhiteSpace(requestResponseModel.FilledInValues[0]))
    {
        ViewBag.Success = true;
    }
    else
    {
        ViewBag.Success = false;
    }

    return View(requestResponseModel);
}

下面是被绑定的模型:

代码语言:javascript
复制
public class TestViewModel
{
    public string UrlId { get; set; }
    public string QuizName { get; set; }
    public int QuestionId { get; set; }
    public List<int?> SelectedAnswers { get; set; }

    // This is the value that fails to bind
    public List<string> FilledInValues { get; set; }

    public bool? IsEmbed { get; set; }
}

现在,当您单击该链接时,它会将您带到新选项卡中的以下URL:

https://localhost:44300/content/images/smileyface.png?width=260&height=100&mode=stretch&bgcolor=FFFFFF

这将从S3桶加载图像,图像处理器根据查询字符串中指定的值调整图像大小。图像应该显示,它是一个笑脸:)。

现在,当您返回到表单时,刷新页面并再次提交表单。它将指示您提交的值没有正确绑定而不是。尽管以前是这样的!

如果在Home操作的Index控制器上放置一个断点,则可以观察到绑定失败的值。

现在,它将继续无法绑定此值,直到您重新启动应用程序池(如果应用程序托管在IIS上),或者在Visual中重新启动应用程序。

表单没有更改,值仍在发布,因为我可以在Chrome Network选项卡中看到,一旦提交了表单,您就可以看到在控制器的this.Request.Form值中格式化的查询字符串值。

请您帮助我确定为什么绑定之前工作,然后在加载通过图像处理器加载的图像失败?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-27 23:43:31

我花了很长时间研究这个问题,试图找出为什么在使用image操作图像之后绑定不能工作。

幸运的是,我已经成功地使绑定再次工作,但我需要更改我用来绑定的每个模型。如果我将模型更改为绑定到IList<>,而不是List<string>,那么与索引的绑定将再次生效。

代码语言:javascript
复制
public class TestViewModel
{
    // Changed from List<string> to IList<string> and it works now
    public IList<string> FilledInValues { get; set; }
}

这让我想知道是什么原因造成了这种情况,以及是否有一些错误或可能是什么原因造成的。我会尽力让你了解最新情况的。

更新

目前,这与我在正式的Bug #284存储库中发布的ImageProcessor相关。这似乎是由库中定义的TypeConverter for List<T>引起的。

12/01/2016 - Bug已经解决,我相信修复将在下一个版本中发布。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34464671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档