javascript - 在 ASP.NET MVC 中的 javascript 函数中设置字符串给出 NullReferenceException

标签 javascript asp.net-mvc razor nullreferenceexception

在我的 MVC View 中,我有通过单击按钮执行的 javascript。我试图将一个字符串设置为一组随机字符,这样我就可以正常工作,但是当我尝试将该字符串设置为 javascript 中的“randomchars”字符串时,当我尝试运行 View 时,会出现 NullReferenceException。

下面是代码片段,CreateRString是将模型参数(RString)设置为随机字符串的地方。

<script type="text/javascript">
    function showAndroidToast(toast) {

        var url = '@Url.Action("CreateRString", "Functions")';
        $.ajax({ url: url, success: function (response) { window.location.href = response.Url; }, type: 'POST', dataType: 'json' });

        var randomchars = '@(Model.RString)';
    }
</script>

语法正确吗?我不太确定为什么它会变成 NULL。

最佳答案

JavaScript 在页面传送到客户端(即网络浏览器)后执行。您的 razor 代码在页面发送到客户端之前在服务器上执行。因此,ajax方法将在您尝试访问Model.RString

后执行

要解决此问题,您可以在服务器上调用 CreateRString,也可以使用成功回调中的响应来设置 randomchars

进一步解释选项 2。你可以这样做:

//Action Method that returns data which includes your random chars
public JsonResult CreateRString()
{
    var myRandomChars = "ABCDEF";
    return new JsonResult() { Data = new { RandomChars = myRandomChars } };
}

//The ajax request will receive json created in the CreateRString method which 
//contains the RandomChars
$.ajax({ url: url, success: function (response) { 
    var randomchars = response.Data.RandomChars;
    window.location.href = response.Url; 
}, type: 'POST', dataType: 'json' });

更具体地说, Razor 调用 @Url.Action("CreateRString", "Functions")@(Model.RString) 首先在服务器上执行。

然后,当您调用 showAndroidToast 时,它会在客户端浏览器中执行。

关于javascript - 在 ASP.NET MVC 中的 javascript 函数中设置字符串给出 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16289910/

相关文章:

javascript - 如何在考虑服务器负载的同时制作多人 javascript 游戏作弊证明

javascript - 是什么导致我的绘制数组调用无效操作?

javascript - 如何从 JS 文件读取(MVC 3、Razor)模型值?

javascript - MVC 3 Razor 弹出窗口

javascript - 仅在可滚动时才向 div 添加边框

javascript - 按钮定位在完全错误的位置

javascript - 变量设置不正确

c# - FromsAuthenticationTicket.UserData 始终为空并且身份验证 cookie 不保留值

javascript - 在 Sidenav 菜单中创建子菜单(ASP.NET MVC)

c# - 使用区域时应用程序找不到 View