2016-06-19 12 views
0

次のコードをカプセル化してビューに組み込むにはどうすればよいですか?MVC Return Content vs Return View

public ActionResult Index() 
    { 
     string restURL = "http://loripsum.net/api/3/medium/"; 
     using (var client = new WebClient()) 
     { 
      var data = client.DownloadString(restURL); 
      return Content(data, "application/json"); 
     } 

    } 

ご覧のとおり、私のビューページには一切アクセスしていません。このコードを私が持っているビューに挿入する方法がわかりません。これを関数に変換して、戻り値View(foo)で呼び出すことはできますか?

ありがとうございます!申し訳ありません、私はmvcを使用してから数年が経ちました

答えて

2

あなたの意味を理解していれば、あなたは既に持っているビューに "データ"を埋め込みたいと思っています。プロパティを持つViewModel(ちょうど標準的なC#クラス) - 文字列として取得しているので、データが文字列であると仮定できます。プロパティの値をdataに設定し、このメソッドからViewを返し、新しいViewModelを渡します。それはあなたがそれをレンダリングするHtml.Raw(Model.LoremContent)@使用することができますHTMLだ場合 -

public class MyViewModel 
{ 
    public string LoremContent { get; set; } 
} 

...

public ActionResult Index() 
{ 
    string restURL = "http://loripsum.net/api/3/medium/"; 
    using (var client = new WebClient()) 
    { 
     var data = client.DownloadString(restURL); 
     MyViewModel model = new MyViewModel() { LoremContent = data }; 
     return View(model); 
    } 
} 

は、その後、あなたのビューで、あなたは、@ Model.LoremContentを参照することができます。これを行う場合は、コンテンツを検証してください。そうしないと、スクリプト攻撃に対して脆弱になります。

+0

ありがとう、ラッセル、本当にありがとうございます。 –

+0

こんにちは、ラッセル、私は尋ねるかもしれません - あなたがバリデーションを参照するとき、私のモデルをバインドすることを言及していますか?あなたが私を助けた最終製品はここにあります。もう一度おねがいしますhttps://dotnetfiddle.net/FVBCGq –

+1

サードパーティのサイトからのコンテンツをレンダリングしていて、それをまったく確認していない場合は、誰かがそのサイトをハックするか悪意のあるスクリプトを返すようなサービス?あなたは、そのスクリプトの内容をチェックすることなくスクリプトを埋め込むことによって、そのスクリプトを直接伝播させるのに役立つだろう。 –