来自 C# 的警报消息
Alert message from C#
有没有其他方法可以在 asp.net 网络应用程序中显示来自后端的警报消息而不是这个。
ScriptManager.RegisterStartupScript(this, GetType(), "alertMessage","alert('Called from code-behind directly!');", true);
我也包括了使用 System.Web.UI
命名空间,但使用此代码仍然遇到这 2 个错误:
第一个错误:
The best overloaded method match for
'System.Web.UI.ScriptManager.RegisterStartupScript(System.Web.UI.Page,
System.Type, string, string, bool)' has some invalid
arguments D:\my_backup\Demos\NewShop\NewShop\API\ProductAPIController.cs
85 17 NewShop
第二个错误:
Argument 1: cannot convert from 'NewShop.API.ProductAPIController' to
'System.Web.UI.Page'
D:\my_backup\Demos\NewShop\NewShop\API\ProductAPIController.cs 85 53
NewShop
如果您正在寻找其他方式,那么这里是
Response.Write("<script>alert('Called from code-behind directly!');</script>");
Note : However this is not the good way. You'll never know where your code will be inserted. Also it could potentially break HTML
and cause Javascript
errors. RegisterClientScriptBlock
is right
way to run Javascript
on client.
错误消息会告诉您哪里出了问题。 RegisterStartupScript
方法需要类型为 System.Web.UI.Page
的第一个参数,它在 ASP.NET WebForms 中使用。相反,您将 this
作为第一个参数传递,它是 Controller
class,用于 ASP.NET MVC!
这意味着您正在使用的代码适用于另一种网络架构。要控制控制器的 JavaScript 输出,最好使用 Model
或者 ViewBag
。像这样:
在你的控制器代码中
ViewBag.ShowAlert = true;
在您看来
@if (ViewBag.ShowAlert)
{
<script>alert("(Almost) called from code-behind");</script>
}
如果您需要完全控制呈现的脚本,请将脚本保存为 ViewBag 中的字符串,尽管绝对不推荐这样做!
在你的控制器代码中
ViewBag.SomeScript = "alert('Added by the controller');";
在您看来
@if (ViewBag.SomeScript != null)
{
<script>@Html.Raw(ViewBag.SomeScript)</script>
}
有没有其他方法可以在 asp.net 网络应用程序中显示来自后端的警报消息而不是这个。
ScriptManager.RegisterStartupScript(this, GetType(), "alertMessage","alert('Called from code-behind directly!');", true);
我也包括了使用 System.Web.UI
命名空间,但使用此代码仍然遇到这 2 个错误:
第一个错误:
The best overloaded method match for 'System.Web.UI.ScriptManager.RegisterStartupScript(System.Web.UI.Page, System.Type, string, string, bool)' has some invalid arguments D:\my_backup\Demos\NewShop\NewShop\API\ProductAPIController.cs 85 17 NewShop
第二个错误:
Argument 1: cannot convert from 'NewShop.API.ProductAPIController' to 'System.Web.UI.Page' D:\my_backup\Demos\NewShop\NewShop\API\ProductAPIController.cs 85 53 NewShop
如果您正在寻找其他方式,那么这里是
Response.Write("<script>alert('Called from code-behind directly!');</script>");
Note : However this is not the good way. You'll never know where your code will be inserted. Also it could potentially break HTML and cause
Javascript
errors.RegisterClientScriptBlock
is right way to runJavascript
on client.
错误消息会告诉您哪里出了问题。 RegisterStartupScript
方法需要类型为 System.Web.UI.Page
的第一个参数,它在 ASP.NET WebForms 中使用。相反,您将 this
作为第一个参数传递,它是 Controller
class,用于 ASP.NET MVC!
这意味着您正在使用的代码适用于另一种网络架构。要控制控制器的 JavaScript 输出,最好使用 Model
或者 ViewBag
。像这样:
在你的控制器代码中
ViewBag.ShowAlert = true;
在您看来
@if (ViewBag.ShowAlert)
{
<script>alert("(Almost) called from code-behind");</script>
}
如果您需要完全控制呈现的脚本,请将脚本保存为 ViewBag 中的字符串,尽管绝对不推荐这样做!
在你的控制器代码中
ViewBag.SomeScript = "alert('Added by the controller');";
在您看来
@if (ViewBag.SomeScript != null)
{
<script>@Html.Raw(ViewBag.SomeScript)</script>
}