2012-11-22 84 views
1

發現了一個新問題,這就是爲什麼我要創建一個新帖子。 剃刀發動機不幫助我今天完成工作..剃刀不理解Html.TextBoxFor中帶有或不帶@前綴的ViewBag

使用此代碼我不得到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 

我得到了用戶名。

剃刀是否應該足夠聰明以檢測這種情況?

+0

您可以添加您收到的錯誤消息嗎?這將有助於我們縮小問題範圍。 – tristankoffee

+0

爲什麼不簡單地在'ViewBag'前面省略@因爲它已經是服務器端代碼的一部分?如果'@ class'出現問題,請將'ViewBag'放在它的前面... –

+0

@ Html.TextBoxFor(m => m.UserName,new {disabled =「disabled」,value =(with with withou @)ViewBag .user.UserName}) - 這不起作用!還嘗試過:(字符串)ViewBag.user.UserName –

回答

0

我認爲這是因爲你正在嘗試設置值屬性,該剃鬚刀將使用模型值進行設置。

你可以然而調用助手之前更新使用一個代碼塊中的一個視圖袋型號值:

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

但是,爲什麼你會那麼做的,而不是在模型中已具有值?

+0

事情是我不知道如何在我的控制器中實現這一點。這就是我以這種醜陋的方式做到這一點!你可以幫幫我嗎? –

+0

我不知道你在做什麼來填充視圖包中的內容,但是你可以在控制器中做同樣的事情來填充視圖模型?如果它來自Principal \ Identity對象,那麼您可以在模型中創建一個只讀屬性(不設置)? –