在MVC中创建自定义HTML帮助程序扩展时如何避免重复的脚本标签

用户名

我正在创建一个HTML帮助程序扩展,以呈现自定义文件上传控件。为了使某些客户端功能正常工作,我需要在使用我的助手时提供此脚本。

function CheckSize(fileSize,id)
{
   var fileElement = document.getElementById(id);

   if (fileElement .files !== undefined) {
            var megaBytes = (fileInputs[0].files[0].size / 1024) / 1024;

            if (megaBytes > fileSize) {
                //Do Something
            }
}

为确保该脚本存在,我将不得不将其插入到HTML帮助器中,如下所示。

 public static class UploadControlExtensions
  {
    public static string UploadControl(this HtmlHelper helper, 
    UploadControlSettings settings)
    {

        string script = GetScript();
        string html = string.format("<input id='{0}'
        onchange='CheckSize({0},{1})'",settings.Id,setting.MaxSize);


        return script + html;
    }
  }

如果页面上仅存在我的控件的一个实例,这很好,但是如果有多个实例,则同一脚本会多次插入页面中。

有没有一种优雅的方法来确保只插入我脚本的一个版本?我知道我可以将其单独添加到我的项目中,但我希望HtmlHelper扩展类可以为您处理所有这些。

德米特里·扎兹(Dmitry Zaets)

您可以将状态存储为ViewData

public static class UploadControlExtensions
{
    public static string UploadControl(this HtmlHelper helper, UploadControlSettings settings)
    {
        var viewData = helper.ViewContext.Controller.ViewData;
        string script = String.Empty;
        if (!viewData.ContainsKey("UploadScriptPresent"))
        {
            script = GetScript();
            viewData.Add("UploadScriptPresent", true);
        }
        string html = string.format("<input id='{0}' onchange='CheckSize({0},{1})'", settings.Id, setting.MaxSize);

        return script + html;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在自定义MVC HTML扩展帮助程序中维护当前缩进

来自分类Dev

如何在Asp.Net MVC中创建自定义HTML帮助器

来自分类Dev

如何在Asp.Net MVC中创建自定义HTML帮助器

来自分类Dev

如何在mvc中为文本框创建自定义html帮助器

来自分类Dev

如何在ASP.NET MVC中创建可重复使用的自定义HTML面板?

来自分类Dev

如何在ASP.NET MVC中创建可重复使用的自定义HTML面板?

来自分类Dev

MVC:在自定义HTML帮助器中读取内容

来自分类Dev

如何在Fabric中创建自定义帮助菜单?

来自分类Dev

在 Chrome 扩展程序中创建自定义标题失败

来自分类Dev

自定义HTML帮助程序问题

来自分类Dev

如何在magento的自定义模块中创建sql安装程序以通过脚本创建表

来自分类Dev

自定义MVC帮助程序扩展控制器和操作上的“转到声明”功能

来自分类Dev

在Grails中创建自定义标签库时出错

来自分类Dev

如何在ckeditor中定义自定义html标签

来自分类Dev

脚本标签中的自定义属性

来自分类Dev

自定义元素中的脚本标签

来自分类Dev

如何创建自定义SELinux标签

来自分类Dev

如何创建自定义[QUOTE]标签?

来自分类Dev

使用自定义标签时避免Vue警告

来自分类Dev

如何在MVC中创建自定义路由

来自分类Dev

如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

来自分类Dev

如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

来自分类Dev

编写自定义扩展时的代码重复性

来自分类Dev

MVC 6 .Net Core1为李克特量表创建自定义标签帮助器

来自分类Dev

Chrome扩展程序内容脚本自定义ui

来自分类Dev

如何显示自定义html标签?

来自分类Dev

是否可以在不使用扩展程序/自定义帮助程序的情况下限制ustry.js中的循环?

来自分类Dev

如何在Hive中编写自联接查询以避免自定义重复

来自分类Dev

具有模型Lambda的MVC5中的自定义HTML帮助器

Related 相关文章

  1. 1

    在自定义MVC HTML扩展帮助程序中维护当前缩进

  2. 2

    如何在Asp.Net MVC中创建自定义HTML帮助器

  3. 3

    如何在Asp.Net MVC中创建自定义HTML帮助器

  4. 4

    如何在mvc中为文本框创建自定义html帮助器

  5. 5

    如何在ASP.NET MVC中创建可重复使用的自定义HTML面板?

  6. 6

    如何在ASP.NET MVC中创建可重复使用的自定义HTML面板?

  7. 7

    MVC:在自定义HTML帮助器中读取内容

  8. 8

    如何在Fabric中创建自定义帮助菜单?

  9. 9

    在 Chrome 扩展程序中创建自定义标题失败

  10. 10

    自定义HTML帮助程序问题

  11. 11

    如何在magento的自定义模块中创建sql安装程序以通过脚本创建表

  12. 12

    自定义MVC帮助程序扩展控制器和操作上的“转到声明”功能

  13. 13

    在Grails中创建自定义标签库时出错

  14. 14

    如何在ckeditor中定义自定义html标签

  15. 15

    脚本标签中的自定义属性

  16. 16

    自定义元素中的脚本标签

  17. 17

    如何创建自定义SELinux标签

  18. 18

    如何创建自定义[QUOTE]标签?

  19. 19

    使用自定义标签时避免Vue警告

  20. 20

    如何在MVC中创建自定义路由

  21. 21

    如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

  22. 22

    如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

  23. 23

    编写自定义扩展时的代码重复性

  24. 24

    MVC 6 .Net Core1为李克特量表创建自定义标签帮助器

  25. 25

    Chrome扩展程序内容脚本自定义ui

  26. 26

    如何显示自定义html标签?

  27. 27

    是否可以在不使用扩展程序/自定义帮助程序的情况下限制ustry.js中的循环?

  28. 28

    如何在Hive中编写自联接查询以避免自定义重复

  29. 29

    具有模型Lambda的MVC5中的自定义HTML帮助器

热门标签

归档