2016-06-19 5 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"); 
     } 

    } 

Как вы можете видеть, я не доступ к моей странице просмотра на всех, и я не знаю, как вставить этот код в поле зрения у меня есть. Могу ли я превратить это в функцию, а затем вызвать его с обратным представлением (foo)?

Спасибо! Извините, прошло много лет с тех пор, как я использовал mvc

ответ

2

Итак, если я получу ваш смысл, вы хотите вставить «данные» в уже имеющееся представление, поэтому в зависимости от того, что такое «данные», вы должны создать ViewModel (только стандартный класс C#) с свойством в нем - позволяет предположить, что данные являются строкой, так как вы извлекаете ее как строку. Задайте значение свойства для данных, затем верните свой вид из этого метода и перейдите в новый ViewModel.

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 - если это HTML вы можете просто использовать @ Html.Raw (Model.LoremContent), чтобы сделать это. Не забудьте проверить содержимое, если вы собираетесь это сделать, иначе вы сделаете себя уязвимым для атаки сценария.

+0

Большое спасибо Расселу, я очень ценю вашу помощь. –

+0

Привет, Рассел, могу я спросить - когда вы ссылаетесь на проверку, ссылаетесь ли вы на привязку моей модели? Вот окончательный продукт, с которым вы мне помогли. Еще раз спасибо https://dotnetfiddle.net/FVBCGq –

+1

Ну, если вы думаете об этом, если вы рекламируете контент, поступающий с стороннего сайта, и вы его вообще не проверяете - что, если кто-то взломает этот сайт или что он возвращает вредоносный скрипт? Вы помогаете распространять этот скрипт напрямую, встраивая его, не делая никаких проверок на его содержимое. –