ASP.NET MVC返回其他控制器视图时URL未跳转至目标路径问题
问题原因
使用return View(视图路径)的写法仅会在服务器端直接渲染指定视图的内容,不会触发浏览器端的路由跳转,因此地址栏会保留当前Account/Verify的请求地址,不会变更为目标视图对应的路由地址。
解决方案
如果需要跳转到Table_1Controller对应的Create路由地址,将验证成功分支的返回逻辑替换为RedirectToAction即可:
if(dr.Read()) { con.Close(); // 替换原有的return View(OtherController); return RedirectToAction("Create", "Table_1"); }
RedirectToAction会返回302重定向响应,浏览器收到后会主动跳转到目标路由对应的地址,此时地址栏就会显示预期的/Table_1/Create。原来定义的OtherController常量不再需要,可以直接删除。
额外安全提示
当前的SQL查询逻辑直接拼接用户输入的账号密码,存在严重的SQL注入风险,建议改为参数化查询实现,参考写法:
com.CommandText = "SELECT * FROM Table_Login WHERE Username = @UserName and Password = @Password"; com.Parameters.AddWithValue("@UserName", acc.Name); com.Parameters.AddWithValue("@Password", acc.Password);
内容的提问来源于stack exchange,提问作者Lars
相关产品推荐
相关产品推荐

