【问题标题】:ASP .NET CORE MVC, html - choose default image if user didn't choose anyASP .NET CORE MVC, html - 如果用户未选择任何图像,请选择默认图像
【发布时间】:2022-01-25 13:39:31
【问题描述】:

我希望“选择文件”是可选的。这意味着如果用户不单击“选择文件”,则会选择默认图像(/wwwroot/n-image/NoImage.png)。 "Image" 是 Article 对象的字符串属性。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<form>
  <div>
    <div class="form-group">
      <label asp-for="Image" class="control-label"></label>
      <br />
      <div class="custom-file">
        <input type="file" asp-for="Image" class="custom-file-input" id="FLFormFIle" />
      </div>
      <span class="text-danger"></span>
      <br />
    </div>

    <img id="FormFilePrv" src="" style="border:1px; top:20px;margin-left:120px;" />
    <div class="form-group">
      <br />
      <input type="submit" value="Utwórz artykuł" class="btn btn-primary" />
    </div>
  </div>
</form>

$(".custom-file-input").on("change", function() {
  var fileName = $(this).val().split("\\").pop();
  document.getElementById('FormFilePrv').src = window.URL.createObjectURL(this.files[0])
  $(this).siblings(".custom-file-label").addClass("selected").html(fileName);
})

【问题讨论】:

  • 所以您的 javascript 更改了 .src 属性,但您希望它默认为 ~/n-image/NoImage.png 并在用户取消时更改回来?提示if (e.target.files.length)?
  • @JeremyLakeman 如果用户点击“更改按钮”src="path/to/user/image" else src="~/n-image/NoImage.png" 我想要这个。那你能编辑我的代码吗?

标签: javascript c# html asp.net-mvc asp.net-core


【解决方案1】:

我在您的视图中编辑了一些代码。我在wwwroot/n-image 中设置了默认图像117.png,当页面加载时,&lt;img id="FormFilePrv" src="/n-image/117.png" class="detailImage" /&gt; 将显示默认图像,如果用户没有选择任何图像,只需单击submit 按钮,&lt;input type="hidden" name="ImagePath" id="test" value="/n-image/117.png"/&gt; 将提交默认图像图片的路径。

如果用户点击Change button,选中的Image会显示在&lt;img.../&gt;&lt;input type="hidden" ...../&gt;的值会变成选中Image的路径。

查看

<form asp-controller="Home" asp-action="Show" method="post" enctype="multipart/form-data">
      <div>
        <div class="form-group">
          <label  name="Image" class="control-label"></label>
          <br />
          <div class="custom-file">
            <input type="file" name="Image" class="custom-file-input" id="FLFormFIle" />
          </div>
          <span class="text-danger"></span>
          <br />
        </div>
    
        <img id="FormFilePrv"  src="/n-image/117.png" class="detailImage" />
        <input type="hidden"   name="ImagePath" id="test" value="/n-image/117.png"/>
        <div class="form-group">
          <br />
          <input type="submit" value="Utwórz artykuł" class="btn btn-primary" />
        </div>
      </div>
    </form>
    
    @section Scripts
    {
        <script>
            $(".custom-file-input").on("change", function() {
              var fileName = $(this).val().split("\\").pop();
              document.getElementById('FormFilePrv').src = window.URL.createObjectURL(this.files[0]);      
              $(this).siblings(".custom-file-label").addClass("selected").html(fileName);
              var ImagePath =  document.getElementById('FormFilePrv').src;
              document.getElementById('test').value= ImagePath;
            })
        </script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    }

控制器

        [HttpGet]
        public IActionResult Show()
        {
           
            return View();
        }

        [HttpPost]
        public async Task<IActionResult> Show(string ImagePath,IFormFile Image)
        { 
          //......
            return View();
        }

演示

当用户直接点击submit按钮时,默认Image的路径将提交给控制器。

当用户选择一个Image并点击submit按钮时,选择的Image和选择的Image的路径将提交给控制器。

【讨论】:

  • 我不能这样做,因为我必须使用' ' asp-for="Image" 以防用户选择图像但同时这个属性让我选择图像,即使我不想
  • 嗨@Jakub Kowal,我试试你的代码,当我选择一个图像时,选择的图像将显示在&lt;img id="FormFilePrv" src="" style="border:1px; top:20px;margin-left:120px;" /&gt;。所以你想当页面加载时,默认图像将显示在&lt;img..../&gt;,如果用户没有选择任何图像并单击提交按钮,则默认图像将被提交
  • 是的。如果用户单击“更改按钮” Image="path/to/user/image" else Image="~/n-image/NoImage.png" 我想要这个。图片是文章的字符串属性。
  • 如果要上传文件,&lt;input type="file" asp-for="Image" class="custom-file-input" id="FLFormFIle" /&gt;Image的类型必须是IFormFile,可以看这个document
  • 我已经编辑了我的答案,希望对您有所帮助。
猜你喜欢
  • 2020-03-04
  • 1970-01-01
  • 2021-05-14
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-29
  • 1970-01-01
相关资源
最近更新 更多