1

我的代码在没有点击的情况下执行(这会导致空指针,因为它调用得太早了),这是我的代码:

Site.Master

<input type="submit" onclick="<%MvcApplication2.MvcApplication.hc.setLang("nl");%>"    value="submit">

我对这种情况有 3 个问题

  • <%..%> 之间的代码是在编译时执行的吗?
  • 这甚至会起作用吗(将 <%%> 放入 onclick 中)?
  • 有没有更好的方法从我的 C# 类中调用方法?

提前谢谢

4

3 回答 3

4

是因为它在编译时执行 <%..%> 之间的代码吗?

那是正确的。

代码中断在传递给客户端之前在服务器端呈现。

如果您只想运行这个onclickinput您可以使用AJAX对该方法进行服务器端调用。

于 2012-06-13T09:52:14.683 回答
2

正确 - 调用页面时正在评估传递给 onclick 的值,因为它是服务器端代码 - 您需要

例如,我将创建一个返回设置语言的控制器方法

控制器:

public string setlanguage(string id){
//set your language
return "some string value";
}

控制器(带无效)

public void setlanguage(string id){
//set your language
}

html:

<input type="submit" onclick="setLanguage('nl');"    value="submit">

<script type="text/javascript">
function setLanguage(lang)
$.post('@Url.Action("setlanguage","controllername")/' + lang,function(){
//no result has been returned
});
}
</script>

值得注意的是,如果您没有返回值,那么页面语言的任何更改都可能在下次页面加载之前不会反映出来 - 使用完整的回发可能会更好

于 2012-06-13T09:59:02.010 回答
0

您应该将单击按钮时运行的代码放在函数内,然后将函数名称传递给 onclick 属性。

通过这种方式,您可以轻松知道您的代码是否正确。

于 2012-06-13T09:55:12.093 回答