2015-04-07 8 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)就可以了,你不需要在那里解析。 –