2

ビュー(「Foo.aspx」)に次の行が含まれるアクション「Foo」を含むMicrosoft MVCプロジェクトがあります。

<%= Html.ActionLink("mylinktext1", "bar") %>
<%= Html.ActionLink<MyController>(x => x.Bar(), "mylinktext2") %>

これを Web ブラウザーからヒットするか、AJAX 呼び出しからロードすると、次のように正しく返されます。

<a href="/bar">mylinktext1</a>
<a href="/Bar">mylinktext2</a>

しかし、次のように別のビューからアクションを呼び出すと:

<% Html.RenderAction<MyController>(x => x.Foo()); %>

次に、リンクはターゲットなしでレンダリングされます。

<a href="">mylinktext1</a>
<a href="">mylinktext2</a>

なぜこれが起こるのでしょうか? また、どうすれば回避できますか?

4

1 に答える 1

2

それが間違っているかどうかはわかりませんが、ASPX ビューを返すアクションで Html.RenderAction を使用したことはありません。RenderAction を呼び出すときは、ASCX View User Control を返すコントローラー アクションを呼び出していることを確認します。

通常、.ASPX ファイルはページ全体であり、これを別のページ内にレンダリングすることはできません (すべきではありません)。したがって、View User Control (ASCX) にして、Shared またはコントローラーのビュー フォルダーに配置する必要があると思います。

あなたのコメントに基づいて: もちろん、これで問題ありません。データをモデルとしてビュー/ビュー ユーザー コントロールに返すだけです。AJAX を介してそれらをロードする場合は、Render View to String の実装を検討する必要があります。詳細については、Google または Stack を検索してください。アクション メソッドの JsonPox 属性と呼ばれるものを検索することもできます。これもインターネット上のどこかに実装されています。アクション メソッドをデコレートして、必要に応じて HTML ビュー、XML、または JSON を返すことができるようにします。

于 2010-02-18T20:56:29.187 に答える