gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:25:33 25 4
gpt4 key购买 nike

我正在创建一个 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 扩展类为您处理所有这些。

最佳答案

您可以将状态存储在 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;
}
}

关于javascript - 在 MVC 中创建自定义 Html 帮助程序扩展时如何避免重复的脚本标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24369130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com