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

CSHTML视图向Vue.js应用及组件传值后值为null,求问题排查

问题分析与解决步骤

核心问题1:根实例的modelValue未传递给schoolsSearchApp组件

你在根Vue实例中成功获取到了data-model-value的值,但渲染schoolsSearchApp组件时,没有将这个值传递给它。schoolsSearchApp自身data里的modelValue默认是null,导致子组件School-Card拿到的也是null。

核心问题2:子组件School-Card的props写法错误

当前的props定义不符合Vue规范,passedValue没有被正确纳入props的定义范围内。


具体修复步骤

1. 修改根Vue实例,传递值给schoolsSearchApp

根实例渲染组件时,通过props将modelValue传入schoolsSearchApp:

new Vue({
    el: '#schoolsSearch',
    data: {
        modelValue: document.getElementById('schoolsSearch').getAttribute('data-model-value').toString()
    },
    render: h => h(schoolsSearchApp, {
        props: {
            modelValue: this.modelValue
        }
    })
});

2. 修改schoolsSearchApp组件,接收根实例传递的modelValue

将组件内data中的modelValue改为通过props接收(若无需在组件内修改该值,可直接省略data里的定义):

// schoolsSearchApp组件代码
props: {
    modelValue: {
        type: String,
        required: true
    }
}
// 若无需修改该值,删除原data中的modelValue定义

3. 修复School-Card组件的props写法

将passedValue正确定义在props对象内:

// School-Card组件代码
props: {
    school: {
        type: Object, // 根据实际数据类型调整
        required: true
    },
    passedValue: {
        type: String,
        required: true
    }
}

4. 模板绑定规范优化(可选)

模板中的:passedvalue可改为:passed-value,与驼峰式的passedValue对应,Vue会自动处理大小写转换,代码更符合规范:

<School-Card  
    v-for="school in limitedItems" 
    :passed-value="modelValue"  
    :key="school.DisplayName" 
    :school="school"
></School-Card>

修改完成后,modelValue就能从CSHTML视图顺利传递到根Vue实例,再流转到schoolsSearchApp,最终传递给School-Card组件渲染展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:22:22