我有以下控制器方法
public class ReportController : Controller
{
// GET: Report
public ActionResult Incomplete_Product_Report()
{
return View();
}
}
我想在aspx web-form中的代码隐藏文件中调用以下方法 ShowReport()。
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 webform来生成报告 http://s7.postimg.org/iz4zdety3/44r3.png
一旦我在视图表单中单击“生成报告”按钮,我应该能够在webform中传递参数生成结果,并像第二张图像一样显示Microsoft报告向导(RDLC)。
现在我已经分开完成了这些事情,我想把它们联系在一起
答案 0 :(得分: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();
}
}
与客户端脚本的直接调用相比,这会导致额外的回程。