如何用model.id动态生成HTML属性值并添加静态文本?
解决动态按钮名称的Razor语法问题
你遇到的问题主要是Razor表达式的写法不对,没法正确拼接动态值和静态文本。咱们一步步来修正:
首先,原来的name="@model.id"有两个常见问题:
- 强类型模型里,模型对象的引用是大写的
Model(不是小写model),除非你特意定义了小写的变量; - 没有把动态的
Id值和静态文本“Button”拼接起来,所以只会渲染Id的值,达不到你要的效果。
正确的写法(两种常用方式)
方式1:使用C#字符串插值(推荐,C# 6及以上支持)
这种写法更直观,把动态值嵌入到字符串里:
<button name="@($"{Model.Id} Button")">@($"{Model.Id} Button")</button>
这里的$"{Model.Id} Button"会把Model.Id的值和“ Button”拼接成完整的字符串,比如Id是123的话,最终渲染出来的就是name="123 Button"。
方式2:使用字符串拼接
如果你的项目用的是较老的C#版本,也可以用+来拼接字符串:
<button name="@(Model.Id + " Button")">@(Model.Id + " Button")</button>
注意必须用@()把整个表达式包裹起来,告诉Razor这是一个完整的C#表达式,不然它会把+当成普通文本渲染。
特殊情况:如果用的是弱类型(比如ViewBag/ViewData)
如果你的Id是存在ViewBag里的,写法类似:
<button name="@($"{ViewBag.Id} Button")">@($"{ViewBag.Id} Button")</button>
这样就能正确生成带有动态Id值和静态“Button”文本的按钮名称啦~
内容的提问来源于stack exchange,提问作者Some One
相关产品推荐
相关产品推荐

