C# 电子邮件附件在Chrome中不起作用
我正在成功地将附件文件传递给我的控制器,但我在Chrome上遇到了问题,不仅仅是我的浏览样式。。。按钮和附加文本,如“未选择文件”,但UploadAttachment_Complete函数也不会返回文件名以供显示,因此用户不知道文件已上载。我想我需要问一个问题。为什么Chrome会破坏我的代码?如果不是,我们能淘汰铬吗C# 电子邮件附件在Chrome中不起作用,c#,jquery,asp.net,asp.net-mvc-3,C#,Jquery,Asp.net,Asp.net Mvc 3,我正在成功地将附件文件传递给我的控制器,但我在Chrome上遇到了问题,不仅仅是我的浏览样式。。。按钮和附加文本,如“未选择文件”,但UploadAttachment_Complete函数也不会返回文件名以供显示,因此用户不知道文件已上载。我想我需要问一个问题。为什么Chrome会破坏我的代码?如果不是,我们能淘汰铬吗 <tr> <td style="width: 196px; height:40px"> <
<tr>
<td style="width: 196px; height:40px">
<div id="FileAttached" style="font-size: xx-small;">
Attachments:
@if (Model.Attachment != null)
{
foreach (var a in Model.Attachment)
{
<div id="@a.FileName">@a.FileName<a href='#' title='delete' class="itemDelete"> delete</a></div>
}
}
</div>
</td>
<td>
@using (Html.BeginForm("EmailAttachment", "Message", new { messageID = Model.MessageID }, FormMethod.Post, new { enctype = "multipart/form-data", id = "emailForm", name = "emailForm", target = "UploadTarget" }))
{
<input type="file" name="attachment" />
<input type="button" class="InnerButton" style="float:right"; value="Upload Attachment" onclick="UploadAttachment()" />
}
<iframe id="UploadTarget" name="UploadTarget" onload="UploadAttachment_Complete();" style="position: absolute; left: -999em; top: -999em;"></iframe>
</td>
</tr>
附件:
@如果(Model.Attachment!=null)
{
foreach(模型附件中的变量a)
{
@a、 文件名
}
}
@使用(Html.BeginForm(“EmailAttachment”,“Message”,new{messageID=Model.messageID},FormMethod.Post,new{enctype=“multipart/form data”,id=“emailForm”,name=“emailForm”,target=“UploadTarget”}))
{
}
这里是我的功能
function UploadAttachment() {
$("#emailForm").submit();
}
var isFirstLoad = true;
function UploadAttachment_Complete() {
// First load of the iFrame?
if (isFirstLoad == true) {
isFirstLoad = false;
return;
}
document.getElementById("emailForm").reset();
//Grab the content of the textarea we named jsonResult . Loaded into the iFrame and carries values into variable for access.
var newEmailAttachment = $.parseJSON($("#UploadTarget").contents().find("#jsonResult")[0].innerHTML);
// Display errors
if (newEmailAttachment.IsValid == false) {
jAlert(newEmailAttachment.Message);
return;
}
// Shovel the name of the attached file into a div presented below the attachment textbox.
$("#FileAttached").append('<div id="'+ newEmailAttachment.Name + '">' + newEmailAttachment.Name + '<a href="#" title="delete" class="itemDelete"> delete</a></div>');
}
函数上传附件(){
$(“#emailForm”).submit();
}
var isFirstLoad=true;
函数上传附件_Complete(){
//iFrame的第一次加载?
如果(isFirstLoad==true){
isFirstLoad=false;
返回;
}
document.getElementById(“emailForm”).reset();
//抓取我们命名为jsonResult.的textarea的内容,加载到iFrame中,并将值携带到变量中以供访问。
var newEmailAttachment=$.parseJSON($(“#UploadTarget”).contents().find(“#jsonResult”)[0].innerHTML);
//显示错误
if(newEmailAttachment.IsValid==false){
jAlert(newEmailAttachment.Message);
返回;
}
//将附加文件的名称放入附件文本框下方的div中。
$(“#FileAttached”).append(“”+newEmailAttachment.Name+“”);
}
您提到的都是chrome。您是否在其他浏览器中对此进行过测试?如果是,有哪些浏览器?究竟什么是铬断裂?它是怎么打破的?你说废除Chrome是什么意思?Chrome和电子邮件附件到底有什么关系?电子邮件部分是服务器端的。感谢您询问@Kevin B。它在IE和FF中工作得非常好。Chrome和Safari中的中断。而不是浏览。。。按钮和应显示的文本字段;在Chrome中,你会得到一个上传。。。按钮和文本“未选择文件”。上载时,文件名不会与删除链接一起显示。废除铬是一个笑话。在Chrome中,文件被上传,但UploadAttachment_Complete函数中断,没有显示任何内容。但我已经告诉你了。中断的内容…可能不会从jsonResult获取innerHTML。好了,现在我们开始调试!从console.log($(“#UploadTarget”)
开始,然后向上移动该行,直到进入innerHTML,测试每个步骤以确保它选择了您期望的内容。将您的结果与firefox和firebug的控制台进行比较。也可能值得将.innerHTML改为将json结果存储在textarea中,并使用textarea的value属性将其提取出来,这将确保所有浏览器一致地返回相同的json,而不会出现html解析问题。