1

私のコードはクリックせずに実行されます(呼び出されるのが早すぎるため、ヌルポインターが発生します)、これは私のコードです:

Site.Master

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

この状況について3つ質問があります

  • <%..%> の間のコードはコンパイル時に実行されますか?
  • これでもうまくいきますか (onclick に <%%> を入れます)?
  • C# クラスからメソッドを呼び出すより良い方法はありますか?

thx事前に

4

3 に答える 3

4

コンパイル時に <%..%> の間のコードを実行するからでしょうか?

そのとおりです。

コード ブレークは、クライアントに渡される前にサーバー側でレンダリングされます。

これだけを実行したい場合onclickは、AJAXinputを使用してサーバー側でそのメソッドを呼び出すことができます。

于 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 に答える