在我的 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/