作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码。单击按钮时,我试图将枚举标志值输入到数据库表中,但出现引用错误。
<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: Cleaning is not defined
请帮帮我
最佳答案
查看您的服务器端代码向浏览器输出的内容。听起来像这样:
@EnumHkStatus.Cleaning
正在输出这个:
Cleaning
JavaScript 代码无法理解。 (这就是错误明确告诉您的内容。)对于您的 JavaScript 代码,您可能希望它是一个字符串:
'@EnumHkStatus.Cleaning'
或一个整数:
@((int)EnumHkStatus.Cleaning)
(哪一个由你决定。你可能想测试两者,我不确定模型绑定(bind)器是否可以自动将其中一个或两个转换回 enum
值。)所以最终您的 POST 调用将至少包含有效代码。例如:
$.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
(无论您选择), 除非模型绑定(bind)可以为您转换为相应的 enum
。你会想测试一下。如果确实需要更改方法签名,只需在操作方法的开头将其转换回相应的 enum
。
旁注:您可能想要一些代码来处理 AJAX 响应,如果没有其他原因只是为了检查操作的成功/失败。
关于javascript - jQuery 在通过 Razor 添加枚举时给出引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54073974/
我是一名优秀的程序员,十分优秀!