问题描述
希望大家都过得不错。 我遇到了一个奇怪的问题。我有一个MVC应用程序,其中有部分视图,有自定义文件输入控件。当我第一次加载页面(或每当重新加载整个页面)时,我可以浏览文件并上传,但是当我通过Ajax Call(自定义文件控件所在的位置)呈现部分页面时,浏览按钮不显示文件名不再。 如果我更改不透明度,那么我可以看到文件名,但这不是正常现象,并且本机文件控件也可见,这是我不想要的。 我尝试了一切,但找不到根本原因。请求社区检查代码,并让我知道我做错了什么。
预先感谢。
自定义文件输入控件
<div class="table-cell width-45percent">
@Html.LabelFor(model => Model.File,new { @class = "vLabel container-header fileLabel",@for = "File" })
<div class="control-holder">
@Html.FileInputControl("File","TestText",new { @class = "width-75percent",@Name = "File",title = "File",@id = "File" })
</div>
</div>
用于自定义控件的HTML扩展
public static MvcHtmlString FileInputControl(this HtmlHelper htmlHelper,string name,string labelText,object htmlAttributes = null)
{
TagBuilder divWrapper = new TagBuilder("div");
divWrapper.Attributes.Add("class","fileinputHelper");
TagBuilder inputTextTag = new TagBuilder("input");
inputTextTag.Attributes.Add("class","fileInput_fileName");
inputTextTag.Attributes.Add("type","text");
inputTextTag.Attributes.Add("title","upload file");
TagBuilder browseLinkTag = new TagBuilder("div");
browseLinkTag.Attributes.Add("class","fileInput_OpenFileDialogButton");
browseLinkTag.SetInnerText(labelText);
TagBuilder fakeFileDivWrapper = new TagBuilder("div");
fakeFileDivWrapper.Attributes.Add("class","fakefile");
fakeFileDivWrapper.InnerHtml = inputTextTag.ToString() + browseLinkTag.ToString();
TagBuilder fileTag = new TagBuilder("input");
fileTag.Attributes.Add("type","file");
fileTag.Attributes.Add("class","fileInput_file");
fileTag.Attributes.Add("name",name);
if (htmlAttributes != null)
fileTag.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes),replaceExisting: false);
divWrapper.InnerHtml = fileTag.ToString() + fakeFileDivWrapper.ToString();
return new MvcHtmlString(divWrapper.ToString());
}
用于处理文件输入的Javascript函数
$(".fileInput_file").change(function () {
var filePath = $(this).val();
var fileNameIndex = filePath.lastIndexOf("\\") + 1;
var filename = filePath.substr(fileNameIndex);
var inputTextbox = $(".fileInput_fileName",$(this).parent());
inputTextbox.val(filename);
$(this).attr('title',$(this).val());
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)