HTML onclick触发代码而不点击

时间:2012-06-13 09:48:59

标签: c# html onclick

我的代码是在没有点击的情况下执行的(由于它的调用太早,导致了无效的指针),这是我的代码:

的Site.Master

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

我有3个关于这种情况的问题

  • 是&lt;%..%&gt;之间的代码在编译时执行?
  • 这甚至可以工作(将&lt; %%&gt;放在onclick上)?
  • 有没有更好的方法从我的C#类调用方法?
事先提前

3 个答案:

答案 0 :(得分:4)

  

是因为它执行&lt;%..%&gt;之间的代码在编译时?

多数民众赞成。

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

如果您希望仅运行此onclick的{​​{1}},则可以使用AJAX对该方法进行服务器端调用。

答案 1 :(得分: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>

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

答案 2 :(得分:0)

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

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