jQuery通过Razor添加枚举时给出参考错误

时间:2019-01-07 11:55:27

标签: javascript c# jquery asp.net-mvc enums

这是我的代码。单击该按钮时,我试图在数据库表中输入一个枚举标志值,但出现参考错误。

<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:未定义清洁

请帮助我

1 个答案:

答案 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响应,但仅出于检查操作成功/失败的原因。