转 pages validateRequest ="false

< pages validateRequest ="false"/>

二、注意
1、在web.config中system.web节加入: <pages validateRequest ="false"/>
否则会出现如下错误:

从客户端(Content="<FORM language=javas...")中检测到有潜在危险的 Request.Form 值。
说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置 validateRequest =false 可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(Content="<FORM language=javas...")中检测到有潜在危险的 Request.Form 值。

2、如果你想对其他页面要进行从客户端(Content="<FORM language=javas...")中检测,你就麻烦一点,在调用freetextbox的页面上添加 validateRequest ="false" ,如:
<%@ Page language="c#" validateRequest ="false" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="bizflat.WebForm1" %>

报错:[vue/compiler-sfc]Unexpected(376:0)token D:/桌面/开发项目/vue3-uni-Project01/pages/workbench/mycp/373fetchSurveyData();374fetchBdrList();375});376377 </script> 我的代码如下:<script setup> import { ref, reactive, onMounted, computed } from 'vue'; import { onShow } from '@dcloudio/uni-app'; // 响应式数据 const surveyList = ref([]); const total = ref(0); const loading = ref(false); const formData = reactive({ dcWjTitle: '', dcId: [], dcDept: '', state: null }); const bdrOptions = ref([]); const bdrLoading = ref(false); const pagination = reactive({ current: 1, size: 10, total: 0 }); // 被测评人选择器相关 const bdrSearchKeyword = ref(''); const showBdrList = ref(false); const filteredBdrOptions = ref([]); const showBdrPlaceholder = ref(true); // 状态选择器相关 const stateOptions = ref([ { label: '全部', value: null }, { label: '已提交', value: 1 }, { label: '未提交', value: 0 } ]); const showStateList = ref(false); // 计算属性 const selectedBdrLabel = computed(() => { if (formData.dcId.length === 0) return ''; const selected = bdrOptions.value.find(b => b.value === formData.dcId[0]); return selected ? selected.label : ''; }); const getStateLabel = (value) => { const state = stateOptions.value.find(s => s.value === value); return state ? state.label : '全部'; }; // 被测评人选择器方法 const handleBdrFocus = () => { showBdrList.value = true; showBdrPlaceholder.value = false; resetBdrFilter(); }; const handleBdrInput = (e) => { bdrSearchKeyword.value = e.detail.value; resetBdrFilter(); const handleBdrSelect = (item) => { formData.dcId = [item.value]; showBdrList.value = false; bdrSearchKeyword.value = ''; showBdrPlaceholder.value = false; }; const toggleBdrList = () => { showBdrList.value = !showBdrList.value; if (showBdrList.value) { resetBdrFilter(); } }; // 重置被测评人过滤条件 const resetBdrFilter = () => { bdrSearchKeyword.value = ''; filterBdrOptions(); }; // 状态选择器方法 const handleStateSelect = (state) => { formData.state = state.value; showStateList.value = false; }; const toggleStateList = () => { showStateList.value = !showStateList.value; }; // 过滤被测评人选项 const filterBdrOptions = () => { if (!bdrSearchKeyword.value) { // 默认显示前5项,其他隐藏 filteredBdrOptions.value = bdrOptions.value.map((item, index) => ({ ...item, visible: index < 5 // 添加可见性标记 })); return; } const keyword = bdrSearchKeyword.value.toLowerCase(); filteredBdrOptions.value = bdrOptions.value .filter(item => item.label.toLowerCase().includes(keyword)) .map(item => ({...item, visible: true})); // 搜索时全部可见 }; // 获取问卷数据 const fetchSurveyData = async () => { try { loading.value = true; const token = uni.getStorageSync('token'); if (!token) { uni.showToast({ title: '请先登录', icon: 'none' }); uni.redirectTo({ url: '/pages/login/login' }); return; } const res = await uni.request({ url: 'http://172.26.26.43/dev-api/wjdc/wj/listTx', method: 'GET', data: { pageNum: pagination.current, pageSize: pagination.size, dcWjTitle: formData.dcWjTitle, dcId: formData.dcId.join(','), dcDept: formData.dcDept, state: formData.state }, header: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, timeout: 10000 // 增加超时设置 }); // 完整的响应日志 // console.log('API响应:', res); // 处理不同的响应格式 let responseData = null; // 处理 uni.request 的不同返回值格式 if (Array.isArray(res)) { // uni-app 返回数组格式 [error, response] if (res[0]) throw res[0]; // 如果有错误对象 responseData = res[1].data; } else { // 直接返回对象格式 responseData = res.data; } // 检查响应状态码 if (responseData?.code === 200) { surveyList.value = responseData.rows || []; total.value = responseData.total || 0; pagination.total = responseData.total || 0; } else { // 更详细的错误信息 const errorMsg = responseData?.msg || `API返回非200状态: ${responseData?.code || '未知'}`; throw new Error(errorMsg); } } catch (error) { console.error('请求错误详情:', error); // 更精确的错误分类 let userFriendlyMsg = '加载问卷数据失败'; if (error.errMsg?.includes('timeout')) { userFriendlyMsg = '请求超时,请检查网络连接'; } else if (error.errMsg?.includes('404')) { userFriendlyMsg = 'API地址不存在,请联系管理员'; } else if (error.errMsg?.includes('401')) { userFriendlyMsg = '登录已过期,请重新登录'; uni.redirectTo({ url: '/pages/login/login' }); } else if (error.message) { userFriendlyMsg = error.message; } uni.showToast({ title: userFriendlyMsg, icon: 'none', duration: 3000 }); } finally { loading.value = false; } }; // 清除被测评人选择的方法 const handleClearBdr = (e) => { e.stopPropagation(); // 阻止事件冒泡 formData.dcId = []; bdrSearchKeyword.value = ''; showBdrList.value = false; showBdrPlaceholder.value = true; }; // 获取被测评人列表 const fetchBdrList = async () => { try { const token = uni.getStorageSync('token'); if (!token) { console.warn('未获取到token,跳过获取被测评人列表'); return; } // 打印请求开始信息 // console.log('开始获取被测评人列表...'); const res = await uni.request({ url: 'http://172.26.26.43/dev-api/wjdc/wj/getBdrList', method: 'GET', header: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, timeout: 8000 }); // 详细记录原始响应 // console.log('被测评人API原始响应:', res); // 统一处理uni-app不同平台的响应格式 let response = null; if (Array.isArray(res)) { // 小程序格式 [error, response] if (res[0]) { throw res[0]; } response = res[1]; } else { // H5格式 { data, statusCode, ... } response = res; } // 检查HTTP状态码 if (response.statusCode !== 200) { throw new Error(`HTTP错误: ${response.statusCode}`); } // 解析响应体 const responseBody = response.data; // console.log('API响应体:', responseBody); // 处理不同的API响应结构 let data = []; if (Array.isArray(responseBody)) { // 情况1: 直接返回数组 data = responseBody; } else if (responseBody.data && Array.isArray(responseBody.data)) { // 情况2: { data: [...] } data = responseBody.data; } else if (responseBody.rows && Array.isArray(responseBody.rows)) { // 情况3: { rows: [...] } data = responseBody.rows; } else if (responseBody.result && Array.isArray(responseBody.result)) { // 情况4: { result: [...] } data = responseBody.result; } else { console.error('无法识别的API响应格式:', responseBody); throw new Error('无效的API响应格式'); } // 换数据格式 bdrOptions.value = data.map(item => { // 调试输出每个项目 // console.log('被测评人原始项:', item); // 尝试可能的字段组合 return { label: item.dcName || item.name || item.username || item.nickname || '未知名称', value: item.dcId || item.id || item.userId || item.value || null }; }); // console.log('换后的被测评人选项:', bdrOptions.value); // 初始化过滤后的选项 filteredBdrOptions.value = [...bdrOptions.value]; } catch (error) { console.error('获取被测评人失败:', error); // 更详细的错误处理 let errorMsg = '获取被测评人失败'; if (error.errMsg) { if (error.errMsg.includes('401')) { errorMsg = '认证失败,请重新登录'; uni.redirectTo({ url: '/pages/login/login' }); } else if (error.errMsg.includes('timeout')) { errorMsg = '请求超时,请检查网络并重新登录'; uni.redirectTo({ url: '/pages/login/login' }); } else if (error.errMsg.includes('404')) { errorMsg = 'API地址已过期,请重新登录'; uni.redirectTo({ url: '/pages/login/login' }); } else if (error.errMsg.includes('fail')) { errorMsg = `网络请求失败: ${error.errMsg},请联系管理员`; } } else if (error.message) { errorMsg = error.message; } uni.showToast({ title: errorMsg, icon: 'none', duration: 3000 }); } finally { // 添加加载状态管理 bdrLoading.value = false; } }; // 搜索按钮处理 const handleSearch = () => { pagination.current = 1; fetchSurveyData(); }; // 重置按钮处理 const handleReset = () => { formData.dcWjTitle = ''; formData.dcId = []; formData.dcDept = ''; formData.state = null; bdrSearchKeyword.value = ''; showBdrList.value = false; showStateList.value = false; showBdrPlaceholder.value = true; handleSearch(); }; // 编辑/查看问卷 const handleView = (item) => { uni.navigateTo({ url: `/pages/workbench/mycp/operation/operation?id=${item.dcWjId}` }); }; // 分页大小改变 const handleSizeChange = (e) => { pagination.size = e.detail.value; pagination.current = 1; fetchSurveyData(); }; // 页码改变 const handlePageChange = (page) => { pagination.current = page; fetchSurveyData(); }; // 刷新数据 const refreshData = () => { pagination.current = 1; fetchSurveyData(); }; // 页面显示时加载数据 onShow(() => { fetchSurveyData(); fetchBdrList(); }); </script>
最新发布
08-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值