CS0201:只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句
Posted
技术标签:
【中文标题】CS0201:只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句【英文标题】:CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement 【发布时间】:2015-07-05 18:16:22 【问题描述】:我在以下代码行中不断收到上述错误:
<select
id="buildingSlctRoom@Model.roomNo;Request@Model.RequestNo;"
class="form-control"
onchange="fillRooms(@Model.roomNo;,@Model.RequestNo;,$('#buildingsslctRoom@Model.roomNo;Request@Model.RequestNo;').val())"
style="width:auto;">
我无法从该代码中看到任何可能导致此问题的原因?
有什么想法吗?
谢谢
包含 roomNo 和 RequestNo 的类
namespace Timetabling06.ModelViews
public class roomCheckerObject
public string code get; set;
public ICollection<room> rooms get; set;
public ICollection<room> deptRooms get; set;
public ICollection<building> buildings get; set;
public int roomNo get; set;
public int RequestNo get; set;
设置对象变量的代码:
public ActionResult _roomChecker(int roomNum, int requestNum, String user, int roundID, int day, int time, int length,int[] weeks,int students,String roomType,String park, String[] facilities)
var rooms = db.rooms.Include(r=>r.building).Include(r=>r.facilities);
rooms = rooms.Where(r => r.capacity >= students);
if(roomType != "Any")
rooms = rooms.Where(r=>r.roomType.Equals(roomType));
if (park != "Any")
rooms = rooms.Where(r=>r.building.park.Equals(park));
if (facilities != null)
for (var i = 0; i < facilities.Length; i++)
rooms = rooms.Where(r => r.facilities.Any(f => f.facilityName.Equals(facilities[i])));
var deptRooms = db.rooms.Include(r => r.building).Include(r => r.facilities).Where(r=>r.belongsTo.Equals(user));
roomCheckerObject suitableRooms = new roomCheckerObject();
suitableRooms.code = user;
suitableRooms.roomNo = roomNum;
suitableRooms.RequestNo = requestNum;
if(rooms.Count() >0)
suitableRooms.rooms = rooms.ToList();
var buildings = rooms.Select(r => r.building).Distinct();
suitableRooms.buildings = buildings.ToList();
if(deptRooms.Count() >0)
suitableRooms.deptRooms = deptRooms.ToList();
return PartialView(suitableRooms);
【问题讨论】:
什么是 Model.RequestNo & Model.roomNo & Model.RequestNo 的声明? @Jacek 在上面添加了更多代码 ^^ 我建议您阅读有关命名变量、类和方法的 c# 中的名称约定。它将使您的代码在未来更具可读性 @Jacek 我会的,谢谢 【参考方案1】:@Model.RequestNo;,$('#buildingsslctRoom@Model.roomNo;
把这段代码改成这个
@Model.RequestNo,$('#buildingsslctRoom@Model.roomNo
删除 字符,这是用于执行代码,而不是用于使用值。 Ot 应该可以解决您的问题。
【讨论】:
感谢您的解释。我一直这样做,想知道为什么我有这个错误。 Razor 和 ASP 新手哈哈【参考方案2】:您正试图在 html 中编写剃须刀代码,但您的编写方式不正确。
要在 html 中编写 razor 代码,你需要这样做:
<select
id="buildingSlctRoom@(Model.roomNo)Request@(Model.RequestNo)"
class="form-control"
onchange="fillRooms('@Model.roomNo','@Model.RequestNo',$('#buildingsslctRoom@(Model.roomNo)Request@(Model.RequestNo)').val())"
style="width:auto;">
【讨论】:
【参考方案3】:问题在于@Model.roomNo;
被评估为命令。它会给你异常,因为它既不是方法调用也不是属性赋值(如异常中所写)。
如果你想要@( Model.roomNo)
的输出值
【讨论】:
以上是关于CS0201:只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句的主要内容,如果未能解决你的问题,请参考以下文章
unity error CS0201: 只有赋值、调用、递增、递减、等待和新对象表达式可以作为语句使用
C#错误CS0201:只有赋值、调用、递增、递减和新对象表达式可以作为语句使用
在C#三元运算符给出错误:只有赋值,调用,递增,递减和新对象表达式可用作语句