Asp.Net中的脚本回调和Server.Transfer页面传值http://www.zhuye123.com/Article/156/161/2006/2006042328785.html

本文介绍ASP.NET中使用ScriptCallBack与Server.Transfer进行页面间传值的方法。通过示例代码展示了如何在WebForm1.aspx中触发回调,并将TextBox1的值传递到WebForm2.aspx。

在Asp.Net中经常要用到脚本回调和页面间的传值,下面是关于ScriptCallBack和Server.Transfer简单的示例代码

WebForm1.aspx
给Head中增加__doPostBack脚本,如果页面含有HyperLink等按钮控件,该脚本和2个隐藏控件"__EVENTTARGET"和"__EVENTARGUMENT"由FrameWork自动生成,若没有需要手动添加

<SCRIPT language="javascript">
<!--
function __doPostBack(eventTarget, eventArgument) {
    var theform;
    if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
        theform = document.forms["Form1"];//注意此处的FormID
        } else {
        theform = document.Form1;//还有此处
    }
    theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
    theform.__EVENTARGUMENT.value = eventArgument;
    theform.submit();
}
// -->
</SCRIPT>

<form id="Form1" method="post" runat="server">
<INPUT type="hidden" name="__EVENTTARGET" >
<INPUT type="hidden" name="__EVENTARGUMENT" >
<A href="javascript:__doPostBack('ScriptCallBack','ScriptCallBack')">ScriptCallBack</A>
<ASP:TEXTBOX id="TextBox1" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 152px" runat="server">sometext</ASP:TEXTBOX>

C#
WebForm1.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
    if (IsPostBack)
        if (Request.Form["__EVENTARGUMENT"]== "ScriptCallBack")
            Server.Transfer("WebForm2.aspx", true);//第二个参数指示是否保留页面的Form和QuerryString的值
}

WebForm2.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
    if(this.Context.Handler != sender)
        Response.Write(Request.Form["TextBox1"]);
}

VB.NET
WebForm1.aspx.vb
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If IsPostBack Then
        If Request.Form("__EVENTARGUMENT") = "ScriptCallBack" Then
            Server.Transfer("WebForm2.aspx", True)'第二个参数指示是否保留页面的Form和QuerryString的值
        End If
    End If
End Sub

WebForm2.aspx.vb
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If Not Me.Context.Handler Is sender Then
        Response.Write(Request.Form("TextBox1"))
    End If
End Sub 

package com.example.myapplication; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import com.bumptech.glide.Glide; public class XiangqingActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xiangqing); // Intent gIntent = getIntent(); // Zhuye zhuye = (Zhuye) gIntent.getSerializableExtra("zhuye"); // zhuye.getBiaoti(); // zhuye.getContent(); // zhuye.getImageUrl(); // 初始化视图 TextView titleTextView = findViewById(R.id.title_text_view); TextView contentTextView = findViewById(R.id.content_text_view); ImageView imageView = findViewById(R.id.detail_image_view); // 获取递的数据 Intent gIntent = getIntent(); if (gIntent != null && gIntent.hasExtra("zhuye")) { Zhuye zhuye = (Zhuye) gIntent.getSerializableExtra("zhuye"); // Log.d("XiangqingActivity", "Title: " + zhuye.getBiaoti()); // Log.d("XiangqingActivity", "Content: " + zhuye.getContent()); // Log.d("XiangqingActivity", "Image URL: " + zhuye.getImageUrl()); // 设置数据到视图 titleTextView.setText(zhuye.getTitle()); contentTextView.setText(zhuye.getContent()); // 使用Glide加载图片 Glide.with(this) .load(zhuye.getImageUrl()) .placeholder(android.R.drawable.ic_menu_gallery) .error(android.R.drawable.ic_menu_report_image) .into(imageView); } } }
06-24
package com.example.myapplication; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import com.bumptech.glide.Glide; // Glide 是一个图片加载库 public class XiangqingActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置当前 Activity 的布局文件为 activity_xiangqing.xml setContentView(R.layout.activity_xiangqing); // 初始化视图控件:标题 TextView、内容 TextView 图片 ImageView TextView titleTextView = findViewById(R.id.title_text_view); TextView contentTextView = findViewById(R.id.content_text_view); ImageView imageView = findViewById(R.id.detail_image_view); // 获取启动该 Activity 的 Intent Intent gIntent = getIntent(); // 判断 Intent 是否携带了额外数据,并且是否包含名为 "zhuye" 的序列化对象 if (gIntent != null && gIntent.hasExtra("zhuye")) { // 从 Intent 中取出名为 "zhuye" 的对象并进行类型转换 Zhuye zhuye = (Zhuye) gIntent.getSerializableExtra("zhuye"); // 日志输出(可用于调试) // Log.d("XiangqingActivity", "Title: " + zhuye.getBiaoti()); // Log.d("XiangqingActivity", "Content: " + zhuye.getContent()); // Log.d("XiangqingActivity", "Image URL: " + zhuye.getImageUrl()); // 将获取到的数据设置到对应的 UI 控件上 titleTextView.setText(zhuye.getTitle()); // 设置标题文本 contentTextView.setText(zhuye.getContent()); // 设置内容文本 // 使用 Glide 加载网络图片到 ImageView 中 Glide.with(this) // 上下文环境 .load(zhuye.getImageUrl()) // 加载的图片地址 .placeholder(android.R.drawable.ic_menu_gallery) // 占位图(加载中) .error(android.R.drawable.ic_menu_report_image) // 错误图(加载失败) .into(imageView); // 目标 ImageView } } }
06-25
package com.example.myapplication; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; import androidx.fragment.app.Fragment; import org.json.JSONArray; import org.json.JSONObject; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.util.ArrayList; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class HomeFragment extends Fragment { private ListView listView; private MyAdapter adapter; private ArrayList<Zhuye> dataList = new ArrayList<>(); private OkHttpClient okhttp= new OkHttpClient(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home, container, false); listView = view.findViewById(R.id.act_main_listview); adapter = new MyAdapter(requireContext(), dataList); listView.setAdapter(adapter); // 加载测试数据 dataList.add(new Zhuye("加载中...", "请稍候", "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp")); adapter.notifyDataSetChanged(); // 从网络获取数据 fetchDataFromNetwork(); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int i, long id) { Zhuye zhuye = dataList.get(i); Intent intent = new Intent(getActivity(), XiangqingActivity.class); intent.putExtra("zhuye", zhuye); startActivity(intent); } }); return view; } private Call currentCall; private void fetchDataFromNetwork() { if (currentCall != null) { currentCall.cancel(); } // 配置超时 OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build(); // 修改URL currentCall = client.newCall(new Request.Builder() .url("http://172.16.137.4:8080/Login/movies") .header("User-Agent", "Mozilla/5.0") .build()); currentCall.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("Network", "请求失败: " + e.getMessage()); if (isAdded()) { requireActivity().runOnUiThread(() -> { Toast.makeText(getContext(), "请求失败: " + e.getMessage(), Toast.LENGTH_SHORT).show(); // 显示本地测试数据 dataList.clear(); dataList.add(new Zhuye("网络错误", "无法连接到服务器", "")); adapter.notifyDataSetChanged(); }); } } @Override public void onResponse(Call call, Response response) throws IOException { if (!isAdded()) return; try { String jsonData = response.body().string(); Log.d("Network", "收到响应: " + jsonData); JSONArray jsonArray = new JSONArray(jsonData); ArrayList<Zhuye> tempList = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj = jsonArray.getJSONObject(i); tempList.add(new Zhuye( obj.getString("title"), obj.getString("content"), // 确保与JSON字段一致 obj.getString("imageUrl") )); } requireActivity().runOnUiThread(() -> { dataList.clear(); dataList.addAll(tempList); adapter.notifyDataSetChanged(); }); } catch (Exception e) { Log.e("Network", "解析错误", e); if (isAdded()) { requireActivity().runOnUiThread(() -> { Toast.makeText(getContext(), "解析错误: " + e.getMessage(), Toast.LENGTH_SHORT).show(); // 显示本地测试数据 dataList.clear(); dataList.add(new Zhuye("数据错误", "无法解析服务器数据", "")); adapter.notifyDataSetChanged(); }); } } } }); } @Override public void onDestroy() { super.onDestroy(); if (currentCall != null) { currentCall.cancel(); } } }
最新发布
06-25
package com.example.myapplication; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; import androidx.fragment.app.Fragment; import org.json.JSONArray; import org.json.JSONObject; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.util.ArrayList; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class HomeFragment extends Fragment { private ListView listView; private MyAdapter adapter; private ArrayList<Zhuye> dataList = new ArrayList<>(); private OkHttpClient okhttp= new OkHttpClient(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home, container, false); listView = view.findViewById(R.id.act_main_listview); adapter = new MyAdapter(requireContext(), dataList); listView.setAdapter(adapter); // 加载测试数据 dataList.add(new Zhuye("加载中...", "请稍候", "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp")); adapter.notifyDataSetChanged(); // 从网络获取数据 fetchDataFromNetwork(); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int i, long id) { Zhuye zhuye = dataList.get(i); Intent intent = new Intent(getActivity(), XiangqingActivity.class); intent.putExtra("zhuye", zhuye); startActivity(intent); } }); return view; } private Call currentCall; private void fetchDataFromNetwork() { if (currentCall != null) { currentCall.cancel(); } // 配置超时 OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build(); // 修改URL currentCall = client.newCall(new Request.Builder() .url("http://172.16.137.4:8080/Login/movies") .header("User-Agent", "Mozilla/5.0") .build()); currentCall.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("Network", "请求失败: " + e.getMessage()); if (isAdded()) { requireActivity().runOnUiThread(() -> { Toast.makeText(getContext(), "请求失败: " + e.getMessage(), Toast.LENGTH_SHORT).show(); // 显示本地测试数据 dataList.clear(); dataList.add(new Zhuye("网络错误", "无法连接到服务器", "")); adapter.notifyDataSetChanged(); }); } } @Override public void onResponse(Call call, Response response) throws IOException { if (!isAdded()) return; try { String jsonData = response.body().string(); Log.d("Network", "收到响应: " + jsonData); JSONArray jsonArray = new JSONArray(jsonData); ArrayList<Zhuye> tempList = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj = jsonArray.getJSONObject(i); tempList.add(new Zhuye( obj.getString("title"), obj.getString("content"), // 确保与JSON字段一致 obj.getString("imageUrl") )); } requireActivity().runOnUiThread(() -> { dataList.clear(); dataList.addAll(tempList); adapter.notifyDataSetChanged(); }); } catch (Exception e) { Log.e("Network", "解析错误", e); if (isAdded()) { requireActivity().runOnUiThread(() -> { Toast.makeText(getContext(), "解析错误: " + e.getMessage(), Toast.LENGTH_SHORT).show(); // 显示本地测试数据 dataList.clear(); dataList.add(new Zhuye("数据错误", "无法解析服务器数据", "")); adapter.notifyDataSetChanged(); }); } } } }); } @Override public void onDestroy() { super.onDestroy(); if (currentCall != null) { currentCall.cancel(); } } }
06-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值