You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net 6 MVC中JS获取粘贴URL并点击按钮测试链接的问题

解决方案

你的问题核心在于JavaScript的取值逻辑错误:document.getElementById('videolink1')获取的是DOM输入元素对象,而非输入框内的文本值,这和asp-for绑定没有关系——未提交的输入框完全可以通过前端JS直接获取值,不需要经过控制器中转。

基础修复:正确获取URL并打开

修改你的JavaScript代码,直接读取输入框的value属性即可:

function ViewURL() {
    // 获取输入框元素
    const urlInput = document.getElementById('videolink1');
    // 提取输入框的实际值并去除首尾空格
    const url = urlInput.value.trim();
    
    // 简单验证:确保URL不为空且符合浏览器的URL格式验证
    if (url && urlInput.validity.valid) {
        window.open(url, "_blank");
    } else {
        alert("请输入有效的视频链接");
    }
}

进阶优化:前端检测链接可用性

如果需要真正验证链接是否可访问(而非单纯打开预览),可以用fetch API在前端发起轻量请求检测,无需控制器介入:

async function TestVideoLink() {
    const urlInput = document.getElementById('videolink1');
    const url = urlInput.value.trim();
    
    if (!url || !urlInput.validity.valid) {
        alert("请输入有效的视频链接");
        return;
    }

    try {
        // 用HEAD请求检测(比GET更节省带宽)
        const response = await fetch(url, { method: 'HEAD' });
        if (response.ok) {
            alert("链接可用,即将打开预览");
            window.open(url, "_blank");
        } else {
            alert(`链接不可用,HTTP状态码:${response.status}`);
        }
    } catch (error) {
        // 跨域限制或网络错误时,降级为直接打开链接
        alert("无法直接检测链接有效性,将尝试打开预览");
        window.open(url, "_blank");
    }
}

注意:这种检测方式受**跨域资源共享(CORS)**限制,如果视频托管平台不允许跨域HEAD请求,会触发错误,此时降级为直接打开链接是合理的 fallback 方案。

如果使用进阶检测函数,只需修改按钮的onclick事件:

<input name="testvideolink" class="btn btn-group-sm btn-info" id="testvideolink" style="font-size:smaller" value="Test Video Link" onclick="TestVideoLink()">

内容的提问来源于stack exchange,提问作者RJPWilliams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:35:11