-1
這是我的MVC查看頁面VB代碼,即從控制器傳遞ViewData(「最大超出」)。也就是說,如果ViewData(「最大超過」)爲true,則它將呈現帶有標籤控制的行。我的VB語法有什麼問題嗎?我怎樣才能把VB條件放在View頁面中?剃鬚刀查看頁面中的VB語法
@Using (Html.BeginForm())
@<table>
@If ViewData("IsMaximumExceed") Then
<tr>
<td colspan="3">
@Html.Label(
Sub(settings)
settings.AssociatedControlName = "MaximumExceed"
settings.Text = "Maximum Exceed"
End Sub).GetHtml()
</td>
<tr>
</table>
End Using
什麼問題?它對我來說看起來沒問題......但請注意,VB不支持ASP.NET Core(包括Razor),因此您應該儘快過渡到C#。 – Dai
請注意,在ASP.NET MVC中沒有「控件」 - 「Html.Label」是一個「HTML助手」,它以無狀態方式直接呈現HTML。 – Dai
我在剃刀視圖中得到了
回答
由於
@Using (Html.BeginForm())
語句開始在「代碼塊模式」形式,在VB.NET上下文需要設置「文本模式」或者使用@:
(單線操作者),@<text>...</text>
(單個或多個線模式)或簡單地@
隨後用HTML塊元素:後面運營商HTML標籤括起來的用法的原因是,VB.NET允許內聯XML元素通過施加「文本模式」內部「代碼塊模式」,其C#不具有該功能(請參閱Razor syntax for VB.NET)。
因此,問題所提供的樣本應該修改這個樣子,用
@
前<tr>
標籤下If
代碼塊創建HTML塊元素:由於@Dai在他回答說,我也喜歡強類型「視圖模型」具有屬性的使用而不是傳遞
ViewBag
ViewData
或,因此修改後的代碼如下所示:模型
控制器
查看
相關的問題:
Razor View Engine Quirks in VB.NET
Using in Razor VB.net MVC not work as expected
來源
2017-04-13 03:59:27
我明白了,這正是我所期待的。非常感謝。 – Julia
@Julia歡迎來到Stack Overflow。請考慮[接受](https://meta.stackexchange.com/q/5234/179419)解決您的問題的答案,方法是單擊答案旁邊的複選標記,表示您已找到解決方案。沒有義務這樣做。 –
您有錯誤的方法
Label(HtmlHelper, String, String)
的參數。第一個字符串參數是expression
,第二個字符串參數是labelText
。If ViewData("Maximum exceed")
您的If ViewData("Maximum exceed")
檢查是否有字典成員的密鑰"Maximum exceed"
但expression
值是"MaximumExceed"
- 他們不匹配。也就是說,您應該更喜歡使用強類型的「視圖模型」對象,而不要使用無類型對象ViewData
或ViewBag
。注意我使用
NameOf
操作來獲得屬性的字符串名稱。或者更好的是,使用Html.LabelFor
。來源
2017-04-13 00:37:35 Dai
非常感謝您的回覆。我將在剃刀視圖中應用表達式。 – Julia
但是我想在表格行中顯示Label控件,我怎樣才能在視圖中放置VB語法條件? – Julia
相關問題