2015-04-07 9 views
0

我在我的網站上有一個頁面出現問題,我使用cookie值從我的數據庫中拉出一些數據。它對我的字符串工作正常,但對我的int和日期有問題。聲明頁面變量的問題 - 剃刀

我開始通過聲明空白變量:

int numAdults; 

然後我檢查是否設置cookie,如果是,我執行數據庫查詢(numAdults是在數據庫中的數據類型爲int):

if(Request.Cookies["BookingReq"] != null){ 
    var breq = db.QuerySingle("SELECT * FROM BookingRequests WHERE BookingGUID = @0", Request.Cookies["BookingReq"].Value); 
    numAdults = int.Parse(breq.NumAdults);   
} 

的,在我的形式,我想爲空,如果cookie沒有設置顯示或顯示「選擇」選項,如果它是:

<select class="form-control" id="numAdults" name="numAdults" @Validation.For("numAdults")> 
    <option>Choose</option> 
    <option value="0" selected="@(int.Parse(numAdults) == 0)">0</option> 
    <option value="1" selected="@(int.Parse(numAdults) == 1)">1</option> 
    <option value="2" selected="@(int.Parse(numAdults) == 2)">2</option> 
    <option value="3" selected="@(int.Parse(numAdults) == 3)">3</option> 
    <option value="4" selected="@(int.Parse(numAdults) == 4)">4</option> 
</select> 

然而,這給我留下了以下錯誤,當我運行頁:

<option value="0" selected="@(numAdults == 0)">0</option> 
Operator '==' cannot be applied to operands of type 'string' and 'int' 

謝謝,加文

+1

'numAdults'是一個字符串,而不是一個int。 –

+0

我有一種感覺,我需要添加一個AsInt()在那裏,但我不知道在哪裏? – Gavin5511

+1

@(int.parse(numAdults)== 0) –

回答

1

不知道的WebMatrix是如何返回它的動態結果,但我認爲breq.NumAdults必須實際是字符串,否則在分配到numAdults時應該出錯。 (通過在該行上拋出一個斷點並檢查breq.NumAdults來確認)。

看來你想要做的是讓numAdults一個整數,然後解析從數據庫中檢索時:

int numAdults; // Or pre-set this to zero if you need a default value. 
... 
numAdults = int.Parse(breq.NumAdults); 
+0

我沒有收到此錯誤「」 - - 'int.Parse(string)'的最佳重載方法匹配有一些無效參數 – Gavin5511

+0

更新了上面的代碼 – Gavin5511

+0

一旦你的numAdults變量是一個整數,那麼你原來的@(numAdults == 0)就可以了,你不需要在那裏解析。 –