我试图访问视图端的模型属性,但它不能像预期的那样工作。以下是我的代码
@{
ViewBag.Title = "Manage";
var message = Model.errorMessage;
}在我看来,在上面的代码中,从控制器端传递的值是在var消息中接收的。问题出在这里:
if ('@message' == "AlreadyTaken") {
$("#alertSection").show();
}它被执行为
if ('' == "AlreadyTaken") {
$("#alertSection").show();
}我试了这么多办法,但都徒劳无功。
发布于 2020-07-20 23:36:14
您需要将值放入JS可以访问的内容中,例如
@{
ViewBag.Title = "Manage";
var message = Model.errorMessage;
}
<input id="myMessage" type="text" value="@message" hidden />然后在JS中
if($('#myMessage').val() == 'AlreadyTaken'){
$("#alertSection").show();
}假设您正在对document ready启动JS。
发布于 2020-07-20 23:59:26
如果完整的cshtml代码类似于下面的代码
@{
ViewBag.Title = "Home Page";
var message = Model.errorMessage;
}
<script type="text/javascript">
if ('@message' == "AlreadyTaken") {
$("#alertSection").show();
}
</script>将javascript部分呈现为
if ('' == "AlreadyTaken") {
$("#alertSection").show();
}包括:
如果不是这样,可能中间有一些代码会更改message的值
发布于 2020-07-20 23:18:49
下面的代码在服务器端执行。
@{
ViewBag.Title = "Manage";
var message = Model.errorMessage;
}但是,下面的代码是在客户端执行的javascript代码。
if ('@message' == "AlreadyTaken") {
$("#alertSection").show();
}客户端不知道@message是什么。为了实现这一点,您需要将message变量公开为javascript字符串。
<script>
let javascriptMessage = '@Html.Raw(message)'
if(javascriptMessage == 'AlreadyTaken') {
$("#alertSection").show();
}
</script>https://stackoverflow.com/questions/62998478
复制相似问题