ASP.NET Web Form中矩阵转置功能实现的技术问询
解决矩阵转置按钮的实现问题
要完成转置功能,我们需要先解决两个关键点:保存生成的矩阵实例(因为ASP.NET回发会重新创建页面对象,原数组会丢失),以及正确实现矩阵转置逻辑。下面是完整的解决方案:
首先,在页面类中添加类级别的变量,确保Random实例不会每次点击都重新初始化(避免生成重复的随机数序列),同时定义矩阵大小常量:
public partial class YourPageName : System.Web.UI.Page { private const int size = 10; // 固定10x10矩阵 private Random r = new Random(); // 放置Button1_Click和Button2_Click方法 }
接下来修改Button1_Click方法,把生成的矩阵存入ViewState(转置按钮点击时需要获取原矩阵),同时保留原输出逻辑:
public void Button1_Click(object sender, EventArgs e) { int intLL = Convert.ToInt32(TextBox1.Text); int intUL = Convert.ToInt32(TextBox2.Text); int[,] arr = new int[size, size]; // 生成随机矩阵 for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { arr[row, col] = r.Next(intLL, intUL); } } // 将矩阵存入ViewState,供转置按钮调用 ViewState["OriginalMatrix"] = arr; // 输出原矩阵,用标题区分 Response.Output.Write("<h3>原矩阵</h3>"); for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { Response.Output.Write(arr[row, col] + " "); } Response.Write("<br/>"); } }
最后实现Button2_Click方法,从ViewState取出原矩阵完成转置并输出:
public void Button2_Click(object sender, EventArgs e) { // 先判断是否已生成原矩阵 if (ViewState["OriginalMatrix"] == null) { Response.Output.Write("<p>请先点击「生成」按钮创建原矩阵!</p>"); return; } int[,] originalArr = (int[,])ViewState["OriginalMatrix"]; int[,] transposedArr = new int[size, size]; // 执行转置:行与列元素互换 for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { transposedArr[col, row] = originalArr[row, col]; } } // 输出转置后的矩阵 Response.Output.Write("<h3>转置后的矩阵</h3>"); for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { Response.Output.Write(transposedArr[row, col] + " "); } Response.Write("<br/>"); } }
核心细节说明:
- ViewState的作用:ASP.NET页面每次回发都会重建页面实例,用
ViewState保存原矩阵能避免数据丢失。 - 转置逻辑:转置的核心是把原矩阵的
arr[row, col]赋值给转置矩阵的transposedArr[col, row],实现行和列的互换。 - 结果区分:通过
<h3>标签明确区分原矩阵和转置矩阵,确保两次输出结果都清晰可见。
内容的提问来源于stack exchange,提问作者pratik prabhakar more
相关产品推荐
相关产品推荐

