[英]Check viewbag null in javascript under razor code
我將null傳遞給RepresentativeTypesList viewbag,但是我試圖理解為什么這行
if ('@representativeTypesList' != null)
評估不正確,並且光標直接移到下面視圖的Html.Raw
部分。 我相信我正確輸入了@轉義字符。 任何幫助將不勝感激。
@{
var representativeTypesList = @ViewBag.RepresentativeTypesList;
}
@section Header {
<script type="text/javascript">
if ('@representativeTypesList' != null)
{
var array1 = '@Html.Raw(
Json.Encode(
((IEnumerable<RepresentativeTypesModelView>)ViewBag.RepresentativeTypesList).Select(item => new
{
itemValue = (item.Value == null ? "" : item.Value),
itemText = (item.Name == null ? "" : item.Name)
})
)
)';
hdninput1 = $("#txtSalesReps_hdn");
dropdown1 = $("#selSalesReps");
dropdown1.append($("<option />").val('default').text('-- '@lbls.lblSelectOption' --'));
if (array1.length > 0)
{
$.each(array1, function() {
dropdown1.append($("<option />").val(this.itemValue).text(this.itemText));
});
}
}
</script>
}
可能會刪除@representativeTypesList兩側的刻度線,可能是因為它將字符串評估為不為null而不是將變量評估為null。
剃刀僅用於創建初始標記。 呈現頁面后(即,一旦在客戶端中運行javascript,而不是在服務器上進行准備), '@representativeTypesList'
將被視為呈現時存在的硬編碼字符串,它將不會被呈現。視為JavaScript變量。
相反,為什么不聲明一個javascript變量並使用Razor設置其初始值:
var repTypesList = @representativeTypesList;
if (repTypesList !== null) {
...
}
然后,您可以在運行時等更改值。
您可以簡單地將ViewBag對象傳遞到代碼中而無需先將其強制轉換為變量嗎? 除非有特定原因需要這樣做,否則該方法應該起作用。 正如Elemente Pete所說,Razor僅用於創建初始標記。 剃刀永遠不會發送到瀏覽器。 它在服務器上處理。 然后,它將以HTML,CSS,JS代碼呈現要呈現的內容,然后將其發送到瀏覽器。 然后,瀏覽器運行JS代碼。 那樣想你的代碼,我會嘗試替換
如果('@representativeTypesList'!= null)
同
如果(@ ViewBag.RepresentativeTypesList!= null)
希望有幫助!
賈森
在此使用JavaScript中的Razor給出了解決方案。 由於我的代碼在js部分中,因此需要用“文本”標簽包圍。 謝謝。
我只是在我的代碼中嘗試了以下方法,但它確實有效。 將此與您的代碼進行比較。
在控制器中:
public ActionResult SomeMethod(int id)
{
ViewBag.RepresentativeTypesList = null;
}
在視圖中:
@{
var representativeTypesList = ViewBag.RepresentativeTypesList;
}
@section Header {
<script type="text/javascript">
if ('@representativeTypesList' != null)
{
if (array1.length > 0)
{
$.each(array1, function() {
dropdown1.append($("<option />").val(this.itemValue).text(this.itemText));
});
}
}
</script>
}
我必須修改if語句中的代碼,因為我沒有您擁有的某些對象,但是當我運行它時,它跳過了if語句,並且沒有運行任何對象。
如果您有任何疑問,請告訴我!
賈森
另外,如果此方法或您在此處遇到的問題的任何解決方案有效或有所幫助,請確保將答案標記為正確的答案(如果不是您的問題),或者如果答案是有益的,請單擊向上箭頭以表明答案是正確的。有用。 謝謝! :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.