ASP.NET MVC 5:模型未从 Razor 窗体 w/jQuery Mobile 绑定到 HttpPostedFileBase

ASP.NET MVC 5 : model not binding to HttpPostedFileBase from Razor form w/jQuery Mobile

提问人:rwkiii 提问时间:11/11/2022 最后编辑:rwkiii 更新时间:11/12/2022 访问量:68

问:

我已经阅读了这个问题的许多可能原因和解决方案,但我看不出其中任何一个可以帮助我。

我正在对使用 jQuery-2.2.4 和 jQuery-mobile-1.4.5 的现有项目进行更改

不知何故,jQuery-mobile 干扰了元素绑定到模型。在我的视图的_Layout中注释掉以下代码行可以成功绑定模型:<input type='file' ...

<script type="text/javascript" 
        src="@Url.Content("~/Scripts/jquery.mobile-1.4.5.min.js")"></script>

这也破坏了现有 UI 的布局。将项目转换为 Bootstrap 等人在短期内是行不通的。

将 jQuery 更新到 3.6.1,但这会破坏锁定到 jQuery 2.n.n 的 jQuery-mobile 1.4.5

更新到 jQuery-mobile-1.5.0rc。它似乎与 jQuery-3.6.1 兼容,但这些都没有解决 HttpPostedFileBase 的模型绑定问题......

不知何故,jquery-mobile 阻止 MVC 绑定发布的数据。我还可以通过 Fiddler 看到该元素被发布为 NULL。

在 MVC 模型中:

[Display(Name = "Certification Photo")]
public HttpPostedFileBase UploadedPhoto { get; set; }

在 Razor 视图中:

@Html.TextBoxFor(r => r.Sitter.Certifications[i].UploadedPhoto,
    new {
        type = "file",
        data_certindex = i,
        accept = "image/gif,image/png,image/jpeg,image/jpg,image/bmp",
        style = "visibility: hidden; position:absolute;",
        @class = "form-control"
    }
)

当我选择一个文件时,我可以看到 的属性按预期填充,但是当发布表单时,Fiddler 显示 UploadedPhoto 提交为空,并在控制器中显示为 NULL。value=UploadedPhoto

当我删除jquery-mobile脚本时,一切正常。

我暂时坚持使用jQuery-mobile。有谁知道是什么原因导致的,和/或如何解决这个问题?

更新:有没有办法在单个控件或整个窗体上禁用jquery-UI事件?我已经尝试过,但这似乎并没有完全禁用jQuery-UI事件。data-role=none

jquery asp.net-mvc jquery-mobile

评论

0赞 Omar 11/14/2022
您是否在表单上尝试过data-ajax=false?

答: 暂无答案