1

それについて行く適切な方法は何ですか。以下の例のように動作する必要があります。

 <input type="button" value="Resume" onclick="window.location = '/Test?testid=@(ViewBag.TestID)'" />
4

4 に答える 4

4

意味的に正しいマークアップを作成するには、この特定の例に ActionLink を使用する必要があるという Zabavsky のコメントを絶対に支持します。

しかし、あなたが尋ねたので:

ビューでカミソリ構文と Javascript を混在させる

絶対にしないでください。

ビューには、マークアップのみが必要です。

<input type="button" value="Resume" id="myButton" data-url="@Url.Action("Test", new { testid = ViewBag.TestID })" />

および javascript ( IN A SEPARATE FILE ) を使用すると、このマークアップを操作して目立たないように拡張できます。

$(function() {
    $('#myButton').click(function() {
        window.location.href = $(this).data('url');
    });
});

もちろん、ユーザーが JavaScript を無効にしている場合、Web アプリケーションは完全に無効になります。そのため、常に意味的に正しいマークアップを記述する必要があります。この場合、HTML ボタンはフォームの送信に使用され、アンカーは他の場所にリダイレクトするために使用されるため、アンカーを使用することになります (これはまさに、この特定のケースで達成しようとしているものです)。

于 2013-07-02T07:10:26.750 に答える
1

Zabavsky が言ったように、これには ActionLink を使用します。

このようなもの:

@Html.ActionLink("Resume", "Test", new { testid = ViewBag.TestID })

actionlink にはかなりの数のオーバーライドがあるため、ニーズに合ったものを選択する必要があります。

上記のものは、現在のコントローラーのアクション「Test」に「Resume」というテキストを含む a href を出力し、testid = ViewBag.TestID のルート値を渡します。

于 2013-07-02T06:54:33.760 に答える
0

次のようにできます。

<html><head><script>function newDoc()  {   window.location.assign("http://www.abc.com")  }</script></head><body><input type="button" value="Load new document" onclick="newDoc()"></body></html>

それが役立つことを願っています。ありがとう。

于 2013-07-02T06:57:26.140 に答える
0

まあ、あなたが書いたことは有効です。'' 文字列が終了していないために js エラーが発生したと思われるため、VS がコードに赤で下線を引くことがありますが、実行すると動作します。

赤い下線を避けるには、次のようにします。

@{string js = "window.location = '/Test?testid="+ViewBag.TestID+"    '";}
<input type="button" value="Resume" onclick="@js" />
于 2013-07-02T07:03:48.803 に答える