声明页面变量的问题 - Razor

时间:2015-04-07 19:12:42

标签: c# variables razor cookies webmatrix

我的网站上的某个网页出现问题,我正在使用Cookie值从我的数据库中提取一些数据。它对我的字符串工作正常,但是我的整数和日期有问题。

我首先声明空白变量:

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,我想显示为空,或者如果是,则显示“selected”选项:

<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 个答案:

答案 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);