这是我的代码。单击该按钮时,我试图在数据库表中输入一个枚举标志值,但出现参考错误。
<button type="button" class="btn btn-default clean" data-id="@item.RoomId">status</button>
$(function () {
$('.clean').click(function () {
$.post("@Url.Action("SetStatus", "ReceptionHk")", {
id: $(this).data("id"),
newStatus: @EnumHkStatus.Cleaning
});
});
});
[Flags]
public enum EnumHkStatus
{
None,
Repair,
Cleaning,
InventoryCheck,
Occupied
};
单击按钮后,我试图在状态列中将值作为int值输入,就像在带有标志的枚举器中一样,但是我遇到以下错误
ReferenceError:未定义清洁
请帮助我
答案 0 :(得分:1)
看看您的服务器端代码输出到浏览器的是什么。听起来像这样:
MiterLimit
正在输出此:
LineDashPattern
JavaScript代码不了解哪个。 (这就是错误专门告诉您的内容。)对于您的JavaScript代码,您可能要么希望它是一个字符串:
@EnumHkStatus.Cleaning
或int:
Cleaning
(哪个取决于您。您可能要测试两者,我不确定模型绑定程序是否可以将其中一个或两个自动转换回'@EnumHkStatus.Cleaning'
值。)因此,最终您可以POST调用至少应包含有效代码。例如:
@((int)EnumHkStatus.Cleaning)
将输出类似:
enum
您可能然后需要更新您的$.post("@Url.Action("SetStatus", "ReceptionHk")", { id: $(this).data("id"), newStatus: @((int)EnumHkStatus.Cleaning) });
操作以接受$.post("/ReceptionHk/SetStatus", { id: $(this).data("id"), newStatus: 3 });
或SetStatus
(无论您选择了哪个),除非模型绑定可以转换为相应的int
为您服务。您将要进行测试。如果确实需要更改方法签名,只需在操作方法开始时将其转换回相应的string
。
旁注:您大概可能想要一些代码来处理AJAX响应,但仅出于检查操作成功/失败的原因。