我正在创建一个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;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句