Asp.net mvc 4 在mvc4中将参数从视图传递到控制器
在MVC4中将参数从视图传递到控制器时,我遇到了一个令人困惑的问题。问题是我创建了一个视图,并创建了以下代码:Asp.net mvc 4 在mvc4中将参数从视图传递到控制器,asp.net-mvc-4,Asp.net Mvc 4,在MVC4中将参数从视图传递到控制器时,我遇到了一个令人困惑的问题。问题是我创建了一个视图,并创建了以下代码: <% using (Html.BeginForm("DisplaySummaryFigures", "Report", FormMethod.Post, new { Par1 = "some", Par2 = "some" })) { %> <%: Html.ValidationSummary(true)%> <table id=
<% using (Html.BeginForm("DisplaySummaryFigures", "Report", FormMethod.Post, new { Par1 = "some", Par2 = "some" }))
{ %>
<%: Html.ValidationSummary(true)%>
<table id="tblInsertDates">
<tr>
<th>
<asp:Label ID="Label1" runat="server" Text="lblStratDate"> Insert the Start Date:</asp:Label>
<input type="date" name="TxtStartDate" value="" />
</th>
<th>
<asp:Label ID="Label2" runat="server" Text="lblEndDate" Style="padding-left: 5px">Insert the End Date:</asp:Label>
<input type="date" name="TxtEndDate" value="" /><br />
</th>
</tr>
<tr>
<td>
<input type="submit" name="SubmitDates" value="Enter" /><br />
</td>
</tr>
</table>
当我运行程序时,返回以下错误:(:
参数名称:parametersere
有什么想法吗??
提前感谢框架正在尝试填充输入参数的值,但是它遇到了日期值为空的问题(可能是因为客户端没有为日期提交任何值,例如字段尚未设置)。您可以通过确保字段中输入值来解决此问题(如默认值或如果其中任何一个符合您的业务模型,则将其设置为必需值)或将输入类型设置为可空(DateTime?)而不是DateTime。框架正在尝试填充输入参数的值,但它遇到了日期为空的问题(可能是因为客户端没有为其提交任何值,例如未设置字段)。您可以通过确保字段中输入了值(如默认值或如果其中任何一个符合您的业务模型,则将其设置为必需值)或使输入类型为空(DateTime?)来解决此问题而不是DateTime。我建议您创建一个类似的模型,并使用强类型视图
public class MyModel
{
[Required]
public DateTime StartDate {get; set;}
[Required]
public DateTime EndDate {get; set;}
}
什么时候传这个
[HttpGet]
public ActionResult ExportSummaryFiguresToCSV()
{
return View(new MyModel());
}
视图:
我建议您创建一个类似的模型,并使用强类型视图
public class MyModel
{
[Required]
public DateTime StartDate {get; set;}
[Required]
public DateTime EndDate {get; set;}
}
什么时候传这个
[HttpGet]
public ActionResult ExportSummaryFiguresToCSV()
{
return View(new MyModel());
}
视图:
调用中可能会忽略已发布的参数。绑定器将无法生成任何有意义的值(默认值除外) 这就是为什么您必须通过允许使用
null
值调用它来明确它
[HttpPost]
public ActionResult ExportSummaryFiguresToCSV(
DateTime? TxtStartDateParam,
DateTime? TxtEndDateParam)
{
// first, get values
DateTime TxtStartDate =
TxtStartDateParam != null ? TxtStartDateParam.Value : __put a default value here__;
DateTime TxtEndDate =
TxtEndDateParam != null ? TxtEndDateParam.Value : __put a default value here__;
// this follows unchanged
StringWriter sw = new StringWriter();
DateTime dtStartDateFromUser = TxtStartDate;
DateTime dtEndDateFromUser = TxtEndDate;
调用中可能会忽略已发布的参数。绑定器将无法生成任何有意义的值(默认值除外) 这就是为什么您必须通过允许使用
null
值调用它来明确它
[HttpPost]
public ActionResult ExportSummaryFiguresToCSV(
DateTime? TxtStartDateParam,
DateTime? TxtEndDateParam)
{
// first, get values
DateTime TxtStartDate =
TxtStartDateParam != null ? TxtStartDateParam.Value : __put a default value here__;
DateTime TxtEndDate =
TxtEndDateParam != null ? TxtEndDateParam.Value : __put a default value here__;
// this follows unchanged
StringWriter sw = new StringWriter();
DateTime dtStartDateFromUser = TxtStartDate;
DateTime dtEndDateFromUser = TxtEndDate;
谢谢你的帮助,但是你在这里输入默认值是什么意思?你能举个例子吗?一个例子是new DateTime(2000,1,1)或DateTime.Now谢谢你的帮助:)谢谢你的帮助,但是你在这里输入默认值是什么意思?你能举个例子吗?一个例子是new DateTime(2000,1,1)或DateTime.Now感谢您的帮助:)问题当在客户端使用此方法时,他们填充不同格式的数据时间。所以当您在控制器上获得值时。将是错误问题当在客户端使用此方法时,他们填充不同格式的数据时间。所以当您在控制器上获得值时。将是错误
[HttpPost]
public ActionResult ExportSummaryFiguresToCSV(
DateTime? TxtStartDateParam,
DateTime? TxtEndDateParam)
{
// first, get values
DateTime TxtStartDate =
TxtStartDateParam != null ? TxtStartDateParam.Value : __put a default value here__;
DateTime TxtEndDate =
TxtEndDateParam != null ? TxtEndDateParam.Value : __put a default value here__;
// this follows unchanged
StringWriter sw = new StringWriter();
DateTime dtStartDateFromUser = TxtStartDate;
DateTime dtEndDateFromUser = TxtEndDate;