我一直在面对这个问题。我找不到任何可以帮助解决这个问题的文章。以下是代码和输出的屏幕截图:
网络界面
代码段
如何传递此输入的值:
<input type="text" id="ProjectName" name="ProjectName" class="form-control" />
到剃须刀召唤的一个参数:
Report.GenerateReport("project name here", "from date here","to date here");
也欢迎角度解决方案。谢谢!
答案 0 :(得分:4)
如果您使用的是RazorWebPages,那么您只需要将方法属性添加到表单格式
<form method="post" class="form-horizontal">
然后您的以下代码将正常运行
@{
Report.GenerateReport(Request["ProjectName"], "from date here","to date here");
}
但是需要将你的FromMonth和FromYear字段转换为DateTime并检查项目名称是否存在其他明智的Report.GenerateReport函数抛出异常,所以你可以将其写为
@{
var porjectName = Request["ProjectName"];
if (!string.IsNullOrEmpty(porjectName ))
{
var fromDate = DateTime.Parse(string.Format("{0}-{1}-{2}", Request["FromYear"], Request["FromMonth"], 1));
var toDate = DateTime.Parse(string.Format("{0}-{1}-{2}", Request["ToYear"], Request["ToMonth"], 1));
Report.GenerateReport(porjectName, fromDate, toDate);
}
}
您可以在http://www.asp.net/web-pages/overview/getting-started/introducing-aspnet-web-pages-2/form-basics
找到有关asp.net razor网页的更多信息或者,如果您使用的是Asp.net Mvc,那么您需要编写Get / Post Actions。在Get Action中,您将初始化视图,通过Submit按钮,您将点击Post Action,其中最佳方法是在名为Model / ViewModel的包装类中加载值,然后将该模型传递给Report.GenerateReport方法。 / p>
控制器类:
public class ReportGeneratorController : Controller
{
[HttpGet]
public ActionResult ProjectReport()
{
return View();
}
[HttpPost]
public ActionResult ProjectReport(ReportParamModel model)
{
return View(model);
}
}
你的模特
public class ReportParamViewModel
{
public string ProjectName {get;set;}
public int FromMonth {get;set;}
public int FromYear {get;set;}
public int ToMonth {get;set;}
public int ToYear {get;set;}
public DateTime GetFromDate()
{
return new DateTime(FromYear, FromMonth, 1);
}
public DateTime GetToDate()
{
return new DateTime(ToYear, ToMonth, 1);
}
}
您的观点或cshtml文件
@Model ReportParamViewModel
<!-- your current html -->
@{
Report.GenerateReport(model.ProjectName, model.GetFromDate(),model.GetToDate());
}
您可以找到有关Asp.net Mvc @ http://www.asp.net/mvc/overview/getting-started
的更多信息答案 1 :(得分:1)
你去:
Report.GenerateReport(Request["ProjectName"], "from date here","to date here");
请求[&#34; ProjectName&#34;]应该获得您的输入值。
您的代码中也存在此问题:
<form class="form-horizontal">
您需要添加&#34;操作&#34;属性到表单。例如:
<form action="ControllerName/ActionName" class="form-horizontal">
答案 2 :(得分:1)
在Razor中执行此操作的标准方法是使用MVC HtmlHelper类。
@using(Html.BeginForm("GenerateReport", "Report", new { projectname = Model.ProjectName, fromMonth = Model.FromMonth , toMonth = Model.ToMonth }, FormMethod.Post))
{
//put your Input Fields here
}
你可能没有模特。在这种情况下,您仍然可以通过删除参数来使用上述代码:
@using(Html.BeginForm("GenerateReport", "Report", FormMethod.Post))
{
//put your Input Fields here
}
创建一个名为Report
的控制器和一个名为GenerateReport
的方法。
//Place this code in ReportController.cs
public ActionResult GenerateReport(string ProjectName, string FromDate, string ToDate)
{
//Add your code here
}
那将完成这项工作。