当用户点击ASP.net页面上的按钮时,我需要
将asp:fileUpload
中的文件保存在服务器上的文件夹中 - 我想这需要在C#中完成,例如How to correctly use the ASP.NET FileUpload control
运行How to call javascript function from asp.net button click event
有没有办法结合C#和Javascript来实现我的需求?如果没有,我该怎么做?
答案 0 :(得分:4)
尝试使用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
答案 1 :(得分:2)
请注意,在服务器端代码(本例中为C#)完全完成并且生成的页面返回给客户端之前,实际上没有JavaScript“运行”。一旦该页面在客户端上呈现,然后 JavaScript就会在客户端上运行。
因此,为了执行您的JavaScript代码,您需要做的就是将其包含在返回给客户端的页面中。有很多方法可以做到这一点,选项取决于您使用的是WebForms还是MVC。
例如,您可以在WebForms中使用RegisterStartupScript之类的内容。或者,您可以将PlaceHolder
控件中的JavaScript代码与Visible=false
一起存在,并且仅在控件中显示控件,以便运行JavaScript代码。 (通过在服务器端条件中包装JavaScript代码来确定是否呈现它,大致相同的方法也可以在MVC中轻松使用。)
要记住的主要事情是你不是“从C#运行JavaScript代码”或类似的东西。服务器端和客户端代码之间存在严格的分离。服务器端代码最终构建它发送回客户端的页面,该页面可以包含在该客户端上运行的JavaScript代码。