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

求助:在.cshtml表单中显示@ViewBag.Name仅展示原始数据

解决.cshtml中@ViewBag.Name显示原始文本的问题

嘿,我之前也碰到过一模一样的情况!这基本都是Razor语法没被服务器正确解析导致的,咱们一步步排查解决:

  • 先确认文件扩展名是标准的.cshtml:如果你的文件后缀是.html,或者不小心变成了.cshtml.txt这类,ASP.NET会把它当成纯静态文件处理,根本不会解析里面的@表达式,自然就原样输出@ViewBag.Name了。赶紧右键检查文件名,改成正常的xxx.cshtml就行。

  • 检查视图里的写法是否正确:

    • 别把@ViewBag.Name包在@Html.Raw()里,比如@Html.Raw("@ViewBag.Name")会强制输出原始文本,直接写@ViewBag.Name就好。
    • 如果是在表单字段的value属性里,确保写法是 <input type="text" value="@ViewBag.Name" />,别加多余的引号或者转义符。
  • 确认控制器里给ViewBag.Name赋过值:虽然这个不会导致显示原始文本,但没赋值的话会显示空值,还是提一句——在对应的Action方法里要写类似这样的代码:

public ActionResult YourAction()
{
    ViewBag.Name = "要显示的具体内容";
    return View();
}
  • 核对项目类型是否匹配:如果是在ASP.NET Web Forms项目里误用了Razor的@语法,那肯定不行,Web Forms用的是<%= ViewBag.Name %>这种语法。如果是MVC/Razor Pages项目,一般新建项目会自动配置好Razor环境,除非你手动改过Web.config里的相关配置。

给你一个正确的示例参考:
控制器代码:

public ActionResult Profile()
{
    ViewBag.Name = "Ceci";
    return View();
}

对应的Profile.cshtml表单部分:

<form method="post">
    <label>姓名:</label>
    <input type="text" name="username" value="@ViewBag.Name" />
    <button type="submit">提交</button>
</form>

这样运行起来,输入框里就会显示“Ceci”而不是@ViewBag.Name啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:34:50