Razor不了解带有或不带@前缀的Html.TextBoxFor中的ViewBag

时间:2012-11-22 16:16:03

标签: asp.net asp.net-mvc razor asp.net-mvc-4

发现了一个新问题,这就是为什么我要创建一个新帖子。 Razor引擎今天没有帮我完成我的工作..

使用此代码,我的屏幕上没有打印ViewBag.user.UserName

<td>@Html.TextBoxFor(m => m.UserName, new { @class = "validate[required]", disabled = "disabled", value = @ViewBag.user.UserName }) @Html.ValidationMessage("usernameVal", "*")</td>

现在,如果我把TextBoxFor放在外面那样:

@ViewBag.user.UserName 

我获得了用户名。

Razor应该足够智能来发现这种情况吗?

1 个答案:

答案 0 :(得分:0)

我认为那是因为你试图设置值属性,剃刀将使用模型值设置。

然后,您可以在调用帮助程序之前使用代码块使用视图包中的模型值更新模型值:

@{
    Model.UserName = ViewBag.user.UserName;
}
<td>@Html.TextBoxFor(m => m.UserName, new { @class = "validate[required]", disabled = "disabled" }) @Html.ValidationMessage("usernameVal", "*")</td>

但是你为什么要这样做而不是已经在模型中有价值?