【问题标题】:ASP.NET - Passing Base64 String From Razor View to ControllerASP.NET - 将 Base64 字符串从 Razor 视图传递到控制器
【发布时间】:2017-02-21 10:53:09
【问题描述】:

我正在尝试将从图像生成的 Base64 字符串传递回我的控制器。我的视图上有一个隐藏的输入字段,它绑定到我的视图模型上的一个属性。但是,当我将视图模型返回到我的控制器时,PhotoPath 属性显示为 null。

不确定数据未绑定的原因。我使用 Javascript 来设置 PhotoPath 输入的值:

      $("#fileChooser").change(function(){
          if (this.files && this.files[0]){
              var reader = new FilerReader();
              reader.onload = function (e) {
                  $("#PhotoPath").val(e.target.result);
              }
              reader.readAsDataURL(this.files[0]);
          }
      });

这是我的输入框:

    @Html.HiddenFor(d => d.PhotoPath)

ViewModel 属性:

    public string PhotoPath { get; set; }

如果我在 EditorFor 中传递一个常规字符串,它就可以很好地传递给控制器​​。不太确定问题是什么。任何帮助将不胜感激!

编辑:这包含在 Kendo ListView 的模板中,如果它提供更多上下文的话。

编辑2:这是我设置照片后的检查员:

【问题讨论】:

  • 您确定您的 js 代码为输入字段设置了正确的值吗?
  • @Shyju 我设置图片后刚刚添加了检查员的图片。它似乎设置正确
  • 您的输入是否在提交的表单中?
  • 尝试将 PhotoPath 视图模型属性注释为 [必需]。我现在不明白原因,但过去对我有帮助。
  • @Shyju 是的,正在ListView的Update函数上提交。如果我将 @Html.HiddenFor 设置为 @Html.EditorFor 并提交一个随机字符串,它就可以正常工作

标签: javascript c# asp.net razor controller


【解决方案1】:

您不能使用@Html 或其他html 助手。因为 html 助手是一次工作(当页面加载时)。因为页面加载后剃须刀不起作用。您应该使用标准输入类型:隐藏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2019-04-25
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多