2015-09-18 1 views
0

я следующий метод контроллеравызов метода внутри кода за файл (aspx.cs файл) из метода контроллера

public class ReportController : Controller 
{ 
    // GET: Report 
    public ActionResult Incomplete_Product_Report() 
    { 
     return View(); 
    } 

} 

Я хочу вызвать следующий метод, который ShowReport() внутри кода позади файла aspx веб-форма.

private void ShowReport() 
    { 

    //DataSource 
    DataTable dt = GetData(type.Text, category.Text,subsidary.Text,country.Text, dateHERE.Text); 
    .................... 
    } 

    private DataTable GetData(string type, string category, string country, string subsidary, string dateHERE) 
    { 
    ................ 
    } 

затем ShowReport() метод вызова и передавать параметры вызова GetData()

У меня следующий вид формы для фильтрации результатов, http://s9.postimg.org/95xvv21z3/wewrwr.png

также я следующие ASPX веб-форму, чтобы сгенерировать отчет http://s7.postimg.org/iz4zdety3/44r3.png

раз I cl ick «Создать отчет» в форме просмотра. Я должен иметь возможность передавать параметры, генерируя результаты в веб-форме, и показывать мастер отчетов Microsoft (RDLC), как 2-е изображение.

Теперь я сделал эти вещи отдельно, я хочу, чтобы связать их вместе

+0

'ShowReport' должен вернуть отчет! Является ли отчет только данными? или он должен быть отформатирован в HTML? –

+0

как только я могу позвонить из метода контроллера aspx webform, обрабатывая все остальное, просто хочу вызвать его в методе контроллера. вы поняли мою идею? – kez

+0

Почему вы пытаетесь смешивать MVC и WebForms? –

ответ

1

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

public ActionResult ShowForm() 
    { 
     MvcApplication1.Webforms.Reportform form = new Webforms.Reportform(); 
     form.ShowForm(); 
    } 

Но я не думаю, что вы ищете что. Как вы объясните с помощью своих изображений, вы хотите вызвать функциональность ASPX в представлении «Создать отчет», которое создается в MVC. Вы можете сделать это двумя способами, либо собрать все необходимые параметры на стороне клиента (JavaScript, JQuery и т.д.), а затем оттуда непосредственно перенаправить на ваш ASPX строке запроса, такие как

$("#generateReport").on('click', function() { 

var category = $("#category").val(); 
//similarly do for all the fields 

if (category!= undefined && category != null) { 
    window.location = '/Report.aspx?category=' + category; 
} 
});​ 

В этом случае , вам также потребуется написать логику внутри Report.aspx, чтобы получить значения из строки запроса, а затем вызвать метод showreport с соответствующими входами.

Другой способ сделать это было бы разместить GenerateReport обратно в MVC, собирать параметры, а затем отправить его дальше к ASPX, что-то вроде этого

[HttpPost] 
    public ActionResult GenerateReport(FormCollection collection) 
    { 
     try 
     { 
      string category = collection["category"]; 
      // TODO: Add similar information for other fields 

      return Redirect(string.format("/Report.aspx?category={0}",category)); //add additional parameters as required 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

Это вызовет дополнительный обратный путь, хотя по сравнению с прямой вызов с клиентского скрипта.

+0

этот вопрос объясняет больше о моей проблеме http://stackoverflow.com/questions/32694218/call-and-send-paramators-to-codebehind-method-from-view-page-in-asp-net-mvc – kez

+0

@kez как это отличается от вышеприведенного? и я думаю, что такое же решение, как указано выше, должно применяться для вашего вопроса, дайте мне знать, если это не так, и я могу попытаться разъяснить –

 Смежные вопросы

  • Нет связанных вопросов^_^