js调用后台,后台调用前台等方法总结
1. javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入Button1_Click中;
复制代码 代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
this.TextBox1.Text = "voodooer";
}
2、在前台可以这样调用:
复制代码 代码如下:
<input type="button" value="访问C#的方法" onclick='document.getElementById("Button1").click();' />
方法二:1、函数声明为public 或者protected
复制代码 代码如下:
public string ss()
{
return("voodooer");
}
2、 前台调用方法
复制代码 代码如下:
<script language=javascript>
var a = " <%=ss()%>";
alert(a);
</script>
方法三:1、 <script language="javascript">
复制代码 代码如下:
<!--
function __doPostBack(eventTarget, eventArgument)
{
var theForm = document.Form1; //指runat=server的form
theForm.__EVENTTARGET.value = eventTarget;
theFrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
-->
</script>
<input type="button" value="按钮" >
方法四:
复制代码 代码如下:
<script language="javascript">
function SubmitKeyClick()
{
if (event.keyCode == 13)
{
event.cancelBubble = true;
event.returnValue = false;
document.all.FunName.value="你要调用的函数名";
document.form[0].submit();
}
}
</script>
<INPUT type="text">
<input type="hidden" > 〈!--用来存储你要调用的函数 --〉
在.CS里有:
复制代码 代码如下:
public Page_OnLoad()
{
if (!Page.IsPost())
{
string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
//根据传回来的值决定调用哪个函数
switch(strFunName)
{
case "enter()":
enter() ; //调用该函数
break;
case "其他":
//调用其他函数
break;
default:
//调用默认函数
break;
}
}
}
public void enter()
{
//……比如计算某值
}
2.如何在JavaScript访问C#变量?
答案如下:
方法一:1、通过页面上隐藏域访问 <input type="hidden" runat="server">
方法二:1、如后台定义了PUBLIC STRING N;前台js中引用该变量的格式为' <%=n%>'或"+ <%=n%>+"
方法三:1、或者你可以在服务器端变量赋值后在页面注册一段脚本
" <script language='javascript'>var temp=" + tmp + " </script>"
tmp是后台变量,然后js中可以直接访问temp获得值。
3.如何在C#中访问JavaScript的已有变量?
答案如下:
方法一:1、前台使用静态文本控件隐藏域,将js变量值写入其中;
2、后台用request["id"]来获取值;
方法二:可以用cookie或session
4.如何在C#中访问JavaScript函数?
答案如下:
c#代码中执行javaScript函数:
方法一:1、Page.RegisterStartupScript("ggg"," <script>SetVisible(1); </script>");
方法二:使用Literal类,然后
复制代码 代码如下:
private void Button2_Click(object sender, System.EventArgs e)
{
string str;
str=" <script language='javascript'>";
str+="selectRange()";
str+=" </script>";
//Literal1.Visible=true;
Literal1.Text=str;
}
总结:1. 首先在webform 中调用js ,然后, js 中调取生成好的按钮的事件,然后在调取js页面生成o 以后 都会 生成 类似 的 id 编号名称ntentPlaceHolder1_Button3 可以在js 中进行这样的添加 webform 页面
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.SessionState;
using PanoramaSystem.DAL;
using PanoramaSystem.Models;
using itthome.Model;
using itthome.DAL;
using System.IO;
using itthome.Common;
using System.Net;
using System.Collections.Specialized;
using System.Text;
namespace PanoramaSystem.Views
{
public partial class CreateOrUpdateRoom : System.Web.UI.Page
{
private int PanId;
protected void Page_Load(object sender, EventArgs e)
{
this.Button3.Visible = false;
PanId = Convert.ToInt32(Request["id"].ToString());
if (!IsPostBack)
{
getSession();
if (Request["id"] == null)
{
Response.Redirect("PanoramaManager.aspx");
}
else
{
try
{
if (Request["roomid"] != null)
{
Models.Room room = new Models.Room();
int id = Convert.ToInt32(Request["roomid"].ToString());
Room rooms = RoomServices.SelectById(id);
TextBox3.Text = rooms.RoomName;
Image2.ImageUrl = "~/upload/Url/" + rooms.UrlPic;
picDiv.Style.Value = "display:s";
Label1.Text = "编辑房间";
}
else
{
Label1.Text = "添加房间";
}
}
catch (Exception ex)
{
Class4Log.LogError("获取要编辑的房间出错!!!", ex);
}
}
}
}
public string Of_GetStr(string url)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string ret = string.Empty;
Stream s;
string StrDate = "";
string strValue = "";
if (response.StatusCode == HttpStatusCode.OK)
{
s = response.GetResponseStream();
StreamReader Reader = new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) != null)
{
strValue += StrDate;
}
}
return strValue;
}
protected void Button1_Click(object sender, EventArgs e)
{
Literal2.Text = "<script language='javascript'>al();</script>";
this.btnBC.Disabled = false;
this.Button3.Visible = false;
if (Image2.ImageUrl == null || Image2.ImageUrl == "")
{
Label3.Text = "全景图不能为空";
this.Button3.Visible = true;//解除控制
}
else
{
//防止重复提交
//逻辑,如果ChecksCreateVR是 true 就表示在生成,不在进行图片上传操作
Models.Room room = new Models.Room();
room.RoomName = TextBox3.Text.ToString();
string paths = System.IO.Path.GetFileName(Image2.ImageUrl);
room.UrlPic = paths;//户型图
room.PanoramaId = PanId;
if (File.Exists(string.Format(@"{0}upload\Url\{1}", System.AppDomain.CurrentDomain.BaseDirectory, paths)))
{
if (Session["ChecksCreateVR"] == "true")
{
}
else {
string xiaotupath = MakeThumbnail(string.Format(@"{0}upload\Url\{1}", System.AppDomain.CurrentDomain.BaseDirectory, paths), string.Format(@"{0}upload\XiaoTu\{1}{2}", System.AppDomain.CurrentDomain.BaseDirectory, Guid.NewGuid(), ".jpg"), 45, 45, "Cut");
room.XiaoTu = System.IO.Path.GetFileName(xiaotupath); //返回 e.jpg
/**/
this.Button3.Visible = true;//解除控制
}
/**/
}
else
{
if (Session["ChecksCreateVR"] == "true")
{
}
else {
room.XiaoTu = "";//返回 e.jpg
this.Button3.Visible = true;//解除控制
}
}
if (Request["roomid"] == null)
{
try
{
if (RoomServices.Select().Where(m => m.PanoramaId == PanId).Any(m => m.RoomName == room.RoomName))
{
if (Session["ChecksCreateVR"] == "false")
{
Response.Redirect("RoomManager.aspx?id=" + PanId, false);
}
else
{
Response.Write("<script>alert('房间名不可重复');</script>");
this.Button3.Visible = true;//解除控制
}
}
else
{
//这里是添加
Session["ChecksCreateVR"] = "true";
RoomServices.Create(room);
#region 生成全景
string CreatePath = System.Configuration.ConfigurationSettings.AppSettings["CreatePath"].ToString();
string[] ImgNameId = ((room.UrlPic).ToString()).Split('.');
string ImgUrl = ImgNameId[0].ToString();
string url = string.Format("{0}?Hid={1}&IId={2}", CreatePath, room.PanoramaId, ImgUrl).ToString();
Class4Log.LogInfo("添加的房间成功");
Response.Redirect("RoomManager.aspx?id=" + PanId, false);
Of_GetStr(url);
if (Session["ChecksCreateVR"] == "true") {
Session["ChecksCreateVR"] = "false";
}
//等所有情况完事了,进行解除
this.Button3.Visible = true;//解除控制
//调取方法
// Literal1.Text = "<script language='javascript'>GetCreate_ajax('"+CreatePath+"'," + room.PanoramaId + "," + ImgUrl + ",'"+url+"');</script>";
#endregion
}
}
catch (Exception ex)
{
Class4Log.LogError("添加的房间出错!!!", ex);
this.Button3.Visible = true;//解除控制
}
}
else
{
try
{
this.Button3.Visible = true;//解除控制
int id = Convert.ToInt32(Request["roomid"].ToString());
Room rooms = RoomServices.SelectById(id);
if (RoomServices.Select().Where(m => m.PanoramaId == PanId).Any(m => m.RoomName == room.RoomName))
{
if (Session["ChecksCreateVR"] == "false")
{
Response.Redirect("RoomManager.aspx?id=" + PanId, false);
}
else {
Response.Write("<script>alert('请不要太快点击');</script>");
}
}
else
{
room.RoomId = rooms.RoomId;
room.UpdateTime = rooms.UpdateTime;
RoomServices.Update(room);
SpriteServices.Update(room.RoomName, id);
Class4Log.LogInfo("修改的房间成功,房间ID是" + id);
Response.Redirect("RoomManager.aspx?id=" + PanId,false);
}
}
catch (Exception ex)
{
Class4Log.LogError("修改房间出错!!!", ex);
this.Button3.Visible = true;//解除控制
}
}
}
Literal1.Text = "<script language='javascript'>GetCreate_ajax('" + 1 + "'," + 1 + "," + 1 + ",'" + 1 + "');</script>";
}
protected void Button2_Click1(object sender, EventArgs e)
{
//上传的时候进行禁用,防止重复提交
FileUpload2.Enabled = false;
string name = FileUpload2.FileName;//获取上载文件的名称
if (name != "")
{
try
{
string ext = System.IO.Path.GetExtension(name);// 获取文件的扩展名,比如 .gif
DateTime dt = DateTime.Now;
string newname = dt.ToString("yyyyMMddHHmmssffff") + ext;//利用时间生成新文件名后再加扩展名生成完整名字
string paths = "~/upload/Url/" + newname;//保存的路径,注意一定要有load目录,不然会错
FileUpload2.SaveAs(System.Web.HttpContext.Current.Server.MapPath(paths));
//string path = Server.MapPath("~/upload/Url/");
//FileUpload2.PostedFile.SaveAs(path + name);//将文件保存在相应的路径下
Image2.ImageUrl = paths;
Image2.Width = 400;
picDiv.Style.Value = "display:block";
//解除选择禁用
FileUpload2.Enabled = true;
this.Button3.Visible = true;
Literal1.Text = "<script language='javascript'>thisdw();</script>";
}
catch (Exception ex)
{
Response.Write("<script>alert('上传文件出错!请重新上传');</script>");
Class4Log.LogError("上传文件出错!!!", ex);
FileUpload2.Enabled = true;
}
}
else {
//如果文件名为空,就解除限制
FileUpload2.Enabled = true;
}
}
/// <summary>
/// 显示消息提示对话框,并进行页面跳转
/// </summary>
/// <param name="msg">提示信息</param>
/// <param name="url">跳转的目标URL</param>
public void ShowAndRedirect(string msg, string url)
{
System.Text.StringBuilder Builder = new System.Text.StringBuilder();
Builder.Append("<script language='javascript' defer>");
Builder.AppendFormat("alert('{0}');", msg);
Builder.AppendFormat("location.href='{0}'", url);
Builder.Append("</script>");
this.RegisterStartupScript("message", Builder.ToString());
}
/// <summary>
/// 获取Session
/// </summary>
public void getSession()
{
try
{
#region 获取登录用户信息
User user = Session["userInfo"] as User;
if (user == null)
{
string msg = "请重新登录",
url = "html/Login.html";
ShowAndRedirect(msg, url);
}
else
{
Login_RoleID3.Text = user.RoleID;
Login_RoleName3.Text = user.RoleName;
Login_UserID3.Text = user.UserID;
Login_UserName3.Text = user.UserName;
Login_Company3.Text = user.Company;
}
#endregion
}
catch (Exception ex)
{
Class4Log.LogError("获取Session出错!!!", ex);
}
Label username = Master.FindControl("UserName") as Label;
username.Text = Login_UserName3.Text;
}
protected void PanData_SelectedIndexChanged(object sender, EventArgs e)
{
}
/**/
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="mode">生成缩略图的方式</param>
public static string MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
new System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
return thumbnailPath;
}
}
}
前台页面
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/BackgroundSys.Master" AutoEventWireup="true" CodeBehind="CreateOrUpdateRoom.aspx.cs" Inherits="PanoramaSystem.Views.CreateOrUpdateRoom" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<title>添加户型</title>
<style type="text/css">
.middle .middle_right .select_2 div {
float: none;
}
.addstyle {
background-color: rgb(236, 236, 236);
width: 500px;
height: auto;
text-align: center;
margin: auto;
border: 1px #F6F6F6 solid;
border-radius: 10px;
padding: 20px;
color: #555555;
}
.pointer {
cursor: pointer;
}
.queren {
cursor: pointer;
margin-top: 20px;
}
</style>
<script src="../js/JQuery/jquery-1.7.min.js"></script>
<script type="text/javascript">
var data = {
Url_Data: "",
Hid_Data: "",
IId_Data: ""
};
function al() {
alert(1);
}
function GetCreate_ajax(Url, Hid, IId,cds) {
alert(Url);
alert(Hid);
alert(IId);
data.Url_Data = Url;
data.Hid_Data = Hid;
data.IId_Data = IId;
console.log(cds);
console.log(Url + "?Hid=" + Hid + "&IId="+IId);
$.ajax({
url: data.Url_Data,
type: "POST",
dataType: "json",
data: {
"Hid": data.Hid_Data,
"IId": data.IId_Data
},
success: function (data) {
if (data.OK) {
//返回接口提示,正确,
console.log(data.OK);
} else if (data.Err) {
//返回接口错误
console.log(data.Err);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("访问接口出错");
}
});
}
function thisdw() {
alert("ks");
document.getElementById("ContentPlaceHolder1_Button3").click();
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script language="javascript" type="text/javascript">
function showImg(value) {
var obj = window.document.getElementById("<%=FileUpload2.ClientID%>");
var image = window.document.getElementById("<%=Image2.ClientID%>");
image.ImageUrl = value
}
</script>
<section class="middle_right">
<form id="form3" runat="server">
<article class="te"><span style="font-size: 12px; color: #646060">我的位置>全景管理>添加房间</span></article>
<section class="select">
<h3>
<asp:Label ID="Label1" runat="server" Text="添加房间"></asp:Label></h3>
<a href="javascript:void(history.go(-1))" class="right">返回</a>
</section>
<section class="select_2">
<div class="addstyle">
<p>
<span style="font-size: 14px; color: #000">房 间 名</span>
<asp:TextBox ID="TextBox3" runat="server" Width="211px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBox3" ErrorMessage="房间名不得为空" ForeColor="#CC0000"></asp:RequiredFieldValidator>
</p>
<p>
</p>
<p>
<span style="font-size: 14px; color: #000">房 间 图</span>
<asp:FileUpload ID="FileUpload2" runat="server" Width="234px" onchange="javascript:showImg(this.value)" />
<asp:Button ID="Button4" runat="server" Text="上传" BackColor="#6699FF" BorderStyle="None" ForeColor="White" Height="21px" OnClick="Button2_Click1" Width="76px" CssClass="pointer" CausesValidation="false" />
<asp:Label ID="Label3" runat="server" ForeColor="#CC0000"></asp:Label>
</p>
<p>
</p>
<p>
<asp:Label ID="Label23" runat="server" ForeColor="#CC0000" Text="上传提醒:图片支持jpg格式"></asp:Label>
</p>
<div id="picDiv" runat="server" style="display: none">
<p>
<asp:Image ID="Image2" runat="server" Width="400" />
</p>
</div>
<p id="btnBC" runat="server">
<asp:Label ID="Label13" runat="server"></asp:Label>
<asp:Button ID="Button3" runat="server" OnClick="Button1_Click" Text="确认保存" BorderStyle="None" BackColor="#4f99c6" ForeColor="White" Height="40px" Width="138px" CssClass="queren" />
</p>
<p>
</p>
<asp:Label ID="Login_RoleID3" runat="server" Text="Login_RoleID" Visible="False"></asp:Label>
<asp:Label ID="Login_RoleName3" runat="server" Text="Login_RoleName" Visible="False"></asp:Label>
<asp:Label ID="Login_UserID3" runat="server" Text="Login_UserID" Visible="False"></asp:Label>
<asp:Label ID="Login_UserName3" runat="server" Text="Login_UserName" Visible="False"></asp:Label>
<asp:Label ID="Login_Company3" runat="server" Text="Login_Company" Visible="False"></asp:Label>
<asp:Literal ID="Literal2" runat="server"></asp:Literal>
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
<div onclick="thisdw();" >dianwo</div>
<asp:Literal ID="Literal3" runat="server"></asp:Literal>
</div>
</section>
</form>
</section>
</asp:Content>