当用户单击 ASP.net 页面上的按钮时,我需要
从服务器上的文件夹中保存文件
asp:fileUpload
- 我想这需要在 C# 中完成,如如何正确使用 ASP.NET FileUpload 控件运行 javascript 函数,如如何从 asp.net 按钮单击事件调用 javascript 函数
有没有办法结合 C# 和 Javascript 来实现我所需要的?如果没有,我该怎么做?
当用户单击 ASP.net 页面上的按钮时,我需要
从服务器上的文件夹中保存文件asp:fileUpload
- 我想这需要在 C# 中完成,如如何正确使用 ASP.NET FileUpload 控件
运行 javascript 函数,如如何从 asp.net 按钮单击事件调用 javascript 函数
有没有办法结合 C# 和 Javascript 来实现我所需要的?如果没有,我该怎么做?
尝试使用元素的onClientClick
属性。asp:button
例如,在您的 .aspx 文件中:
<script type="text/javascript">
function myFunction()
{
alert('hi');
}
</script>
...
<asp:button id="Button1"
usesubmitbehavior="true"
text="Open Web site"
onclientclick="myFunction()"
runat="server" onclick="Button1_Click" />
在你的代码后面(.aspx.cs)
void Button1_Click (object sender, EventArgs e)
{
if (this.FileUpload1.HasFile)
{
this.FileUpload1.SaveAs("c:\\" + this.FileUpload1.FileName);
}
}
更多信息在
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx
请注意,在服务器端代码(在本例中为 C#)完全完成并将结果页面返回给客户端之前,没有 JavaScript 真正“运行”。一旦该页面在客户端上呈现,JavaScript就会在客户端上运行。
因此,为了执行您的 JavaScript 代码,您需要做的就是将其包含在返回给客户端的页面中。有很多方法可以做到这一点,选项取决于您使用的是 WebForms 还是 MVC。
例如,您可能会在 WebForms 中使用RegisterStartupScript之类的东西。或者,您可以只让 JavaScript 代码存在于一个PlaceHolder
控件中,Visible=false
并且只使该控件在打算运行 JavaScript 代码的响应中可见。(大致相同的方法也很容易在 MVC 中使用,只需将 JavaScript 代码包装在服务器端条件中以确定是否呈现它。)
要记住的主要事情是,您不是“从 C# 运行 JavaScript 代码”或类似的东西。服务器端代码和客户端代码之间存在硬性分离。服务器端代码最终构建它发送回客户端的页面,并且该页面可以包含在该客户端上运行的 JavaScript 代码。