0

C#とRazorを使用してMVC3アプリケーションを開発しています。Playビューを表示する必要があるときに問題が発生します。

Playアクションメソッドは、FLV(Flash)ファイルのパスを取得して、ファイルを再生するためにPlayビューに渡されるために使用されます。アプリケーションを使用return View("Play")すると、ビューが正しくレンダリングされます。ただし、コードに示されているように、パス変数をビューに渡す必要があります。これを行うと、次のメッセージが表示されます。

ビュー「再生」またはそのマスターが見つからなかったか、検索された場所をサポートするビューエンジンがありません

アクションメソッドは次のとおりです。

public ActionResult Play(int topicId)
{
var ltopicDownloadLink = _webinarService.FindTopicDownloadLink(topicId);

if (ltopicDownloadLink != null)
{
    var path = Server.MapPath("~/App_Data/WebinarRecordings/" + ltopicDownloadLink);
    var file = new FileInfo(path);
    if (file.Exists)
    {
        return View("Play", path);
    }
}

return RedirectToAction("Index");
}

これがPlayビューです:

@model System.String

<div id='player'>This div will be replaced by the JW Player.</div>

<script type='text/javascript' src='/FLV Player/jwplayer.js'></script>

<script type='text/javascript'>

   var filepath = @Html.Raw(Json.Encode(Model));

   jwplayer('player').setup({
   'flashplayer':'/FLV Player/player.swf',
   'width': '400',
   'height': '300',
   'file': filepath
   });
</script>

私の唯一のヒントは、JavaScriptでモデルを使用する際に間違いを犯したことです。手伝ってくれませんか。

ありがとう

4

4 に答える 4

2

間違ったオーバーロードを呼び出しています。正しいオーバーロードは次のとおりです。

return View("Play", (object)path);

pathまたは、変数をオブジェクトとして宣言することもできます。

object path = Server.MapPath("~/App_Data/WebinarRecordings/" + ltopicDownloadLink);

その後

return View("Play", path);

また動作します:

于 2011-06-09T11:23:07.323 に答える
1

モデルをオブジェクトにキャストする必要がありますreturn View("Play", (object)path);。そうしないと、2番目のパラメーターがマスターページへのパスであるメソッドが呼び出されます

于 2011-06-09T11:22:48.560 に答える
1

ビューは、(静的タイプの文字列を含む)文字列を渡すと、間違ったオーバーロードに到達するようにオーバーロードされます

このオーバーロードが必要です:

View(String, Object)    Creates a ViewResult object by using the view name and model that renders a view to the response.

そして、それはあなたが実際に呼んだ過負荷です:

View(String, String)        Creates a ViewResult object using the view name and master-page name that renders a view to the response.

それで、あなたのモデルはマスターページの名前だと思いました。回避策は、文字列以外のもので渡すモデルの静的タイプを作成することです。

View("viewname",(object)model)

View開発者がこのようなあいまいな方法でオーバーロードするのが良い考えだと思った理由はわかりません...

于 2011-06-09T12:05:53.123 に答える
0

コントローラにインデックスアクションが必要なようです。

エラーは、再生ビューではなく、インデックスアクションが欠落していることに関するものです。インデックスアクションを実装してみて、何が起こるかを確認してください。

于 2011-06-09T11:23:30.303 に答える