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

如何将字符串作为模型传递给分部视图?及编译错误排查

问题解决:修复分部视图编译错误及字符串模型传递方法

一、修复当前编译错误

你的编译错误源于Razor视图中partial标签的model属性语法问题:

  • 嵌套双引号冲突:model属性值内的"test"与外层属性的双引号冲突,导致解析失败
  • 未用Razor表达式包裹C#代码:直接在HTML属性中编写C#对象初始化逻辑,需要用@()包裹

修改后的主视图代码:

@model ProjectName.Views.FoodMenu._DishItemCardModel

<partial name="_DishItemCard" model='@(new ProjectName.Views.FoodMenu._DishItemCardModel { dishName = "test" })' />

也可使用HTML转义字符处理双引号:

@model ProjectName.Views.FoodMenu._DishItemCardModel

<partial name="_DishItemCard" model="@(new ProjectName.Views.FoodMenu._DishItemCardModel { dishName = &quot;test&quot; })" />

二、将字符串作为模型传递给分部视图

若只需传递单个字符串而非复杂模型,按以下步骤操作:

1. 修改分部视图的模型声明

更新_DishItemCard.cshtml的模型类型为string:

@model string

<div>@Model</div>
<div>@Model</div>
<div>@Model</div>

(若不再需要_DishItemCardModel类,可删除对应的_DishItem.cshtml.cs文件)

2. 在主视图中调用分部视图

直接用@()包裹字符串传递:

@model ProjectName.Views.FoodMenu._DishItemCardModel

<!-- 传递硬编码字符串 -->
<partial name="_DishItemCard" model="@("测试字符串")" />

<!-- 传递主视图模型的字符串属性 -->
<partial name="_DishItemCard" model="@Model.dishName" />

额外说明

  • Razor视图中,HTML属性内的C#表达式必须用@()包裹,否则会被当作普通字符串解析
  • 处理字符串嵌套时,优先用单引号包裹外层属性值,避免双引号冲突;或用&quot;作为双引号的HTML转义字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:26:22