如何从ASP.Net中的用户控件调用客户端脚本?

时间:2017-01-11 12:21:36

标签: javascript asp.net ascx

我已经阅读了很多这个问题的参考资料,但没有得到结果。所以,我想让我试着在这里解释我的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函数?

2 个答案:

答案 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);