我正在使用asp.net和链接来显示数据库中的一组书籍。 它给了我一个错误
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0118: 'int' is a 'type' but is used like a 'variable'
Source Error:
Line 48: using(MobileBooksDataContext categoryList = new MobileBooksDataContext())
Line 49: {
Line 50: int catID = Int32(CategoryName.SelectedItem);
Line 51: var newBookList = from b in categoryList.team5_bookmobiles
Line 52: where(b.ca_id == catID)
protected void getBookList()
{
using(MobileBooksDataContext categoryList = new MobileBooksDataContext())
{
int catID = Int32(CategoryName.SelectedItem);
var newBookList = from b in categoryList.team5_bookmobiles
where(b.ca_id == catID)
select new
{
lblBook_name = b.book_name,
lblBook_author = b.book_author,
lblBook_shortdesc = b.book_short_desc
};
lv_Books.DataSource = newBookList;
lv_Books.DataBind();
}
}
protected void btn_Select_Click(object sender, EventArgs e)
{
getBookList();
}
我从下拉列表中获取类别ID,并将其与不同表格中的图书类别ID进行匹配。
答案 0 :(得分:2)
我认为应该是:
int catID = Int32.Parse(CategoryName.SelectedValue.ToString());
答案 1 :(得分:1)
如果您更改了
,该怎么办?int catID = Int32(CategoryName.SelectedItem);
到
int catID = Int32.Parse(CategoryName.SelectedItem);
答案 2 :(得分:1)
第50行使用Int32构造函数就像一个函数。将Int32(CategoryName.SelectedItem)
更改为new Int32(CategoryName.SelectedItem)
,或使用(Int32)(CategoryName.SelectedItem)
转换为int。
答案 3 :(得分:0)
只是为了安全起见:
int catID = Int32.Parse(CategoryName.SelectedItem.ToString());
答案 4 :(得分:0)
如果您正在使用DataBinding,则SelectedItem很可能是数据绑定对象。你可以使用它,但你必须先抛出它。这可能是更好的性能,因为您不必执行字符串解析来获取类别ID。
或者,您可以使用属性DropDownList.SelectedValue,您可以使用数据绑定向导配置它,或者使用控件声明中的属性DataValueField。
无论哪种方式,您都不能使用C ++或VB语法来使用C#执行强制转换为Int32。
如果您使用SelectedValue属性,您将拥有一个字符串并将其转换为Int32,您必须编写如下内容:
var value = Int32.Parse(CategoryName.SelectedValue, CultureInfo.InvariantCulture);