我已经阅读了很多这个问题的参考资料,但没有得到结果。所以,我想让我试着在这里解释我的scienario。
这是我的3脚本,位于view.ascx
控件中。我想在.cs
文件功能和点击事件中调用它。
view.ascx
<script type="text/javascript">
function startLoading() {
alert("load start");
var el = jQuery(".scp-entry-header");
App.blockUI(el);
}
function stopLoading() {
alert("load end");
var el = jQuery(".scp-entry-header");
App.unblockUI(el);
}
function getCalendarData() {
alert("calendarcalled");
}
</script>
view.ascx.cs
//ViewData button click
protected void btnGetData_Click(object sender, EventArgs e)
{
//How to call startLoading function here?
process from database;
//How to call stopLoading function here?
}
//simple function call
protected void showCalendar()
{
//How to call getCalendarData function here?
}
我已阅读有关RegisterScript但未获得结果的内容。我不明白RegisterScript的位置以及如何在函数中调用它。
任何人都可以详细建议我如何在这里调用javascript函数?
答案 0 :(得分:1)
请记住,您无法在C#代码中调用JavaScript函数并继续执行服务器端代码。
.cs文件上对JavaScript函数的所有调用只是服务器端代码执行后执行的调度/标记。它们不会与服务器代码一起执行。
换句话说,您必须使用export class Login extends React.PureComponent {
static propTypes = {
dispatchLogin: React.PropTypes.func,
dispatchLogout: React.PropTypes.func,
user: React.PropTypes.object,
location: React.PropTypes.object,
router: React.PropTypes.object,
}
render() {
const { dispatchLogout, dispatchLogin, user, location, router } = this.props;
// make redirect if user is logged in and redirect is required
if (user) {
if (location && location.query && location.query.redirect && router) {
router.push(location.query.redirect);
}
}
const handleLogin = (values) => new Promise((resolve, reject) => {
dispatchLogin(values, { resolve, reject });
});
return (
<div className={`${styles.loginPage} container`}>
<Helmet title="Login" />
<h2>Login</h2>
{!user && <LoginForm onSubmit={handleLogin} />}
{user &&
<div>
<p>You are currently logged in as {user.name}.</p>
<button className="btn btn-danger" onClick={dispatchLogout}>
<i className="fa fa-sign-out" />{' '}Log Out
</button>
</div>
}
</div>
);
}
}
和异步代码来实现此功能,或者更好的是,将其实现为JavaScript中的异步调用。
客户端的代码应该在客户端上。尽量不要混合它们。
答案 1 :(得分:0)
试试这个
protected void btnGetData_Click(object sender, EventArgs e)
{
//How to call startLoading function here?
process from database;
//How to call stopLoading function here?
Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "startLoading", true);
}
或
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", "<script>alert('Hello.')</script>", false);