2016-05-16 153 views
0

我有一个视图,其中包含列表中的数据,并将其填充到表中。
查看:如何将HiddenFor值从视图传递到控制器

@using (Html.BeginForm("DistrictReport", "Reports", FormMethod.Post)) 
{ 
@for(int i = 0; i < Model.Count; i++) 
{ 
<tr> 
    <td> 
     @Html.DisplayFor(model => Model[i].DISTRICT) 
     @Html.HiddenFor(model => Model[i].DISTRICT) 
    </td> 
    <td> 
     <input type="submit" name="submitButton" value="Show Report 1"/> 
     <input type="submit" name="submitButton" value="Show Report 2"/> 
    </td> 
</tr> 
} 
} 

这里是我的控制器。
控制器:

public ActionResult DistrictReport(string DISTRICT, string submitButton) 
{ 
    if (submitButton.Contains("Show Report")) 
    { 
    var district = new SqlParameter 
     {   
     ParameterName = "District", 
     Value = DISTRICT 
     }; 
enter code here 
var list = db.Database.SqlQuery<ReportDistrict>("exec getDistrictNumber @District", district).ToList<ReportDistrict>(); 
    //..... 
    } 
} 

当我点击提交按钮,页面显示警告区值为空。 我需要做的是将DISTRICT值存入控制器,以便可以执行存储过程。 问题是视图中每行都有一个按钮。 这里是警告:

'(@District nvarchar(4000))exec getDistrictAndNumber @District' expects the parameter '@District', which was not supplied. 

任何建议吗?任何其他方式来做到这一点也非常受欢迎。

+0

是什么渲染隐藏字段的样子和网络监视器显示的发布数据是什么? – Jasen

+0

你的看法是一个集合,因此post方法也需要是一个集合。 post方法应该是'public ActionResult DistrictReport(List <###> model,string submitButton)'其中'###'是您在视图中使用的模型。 (或者它可能是'公众ActionResult区报告(字符串[] DISTRICT,字符串submitButton)' –

+0

请不要添加不必要的关键字标题 - 这就是标签 – slugster

回答

1

你有几个选择。

  1. 使用HTML辅助的形式开始,这将让你有,你可以发布与形式的细节和你的提交按钮会发布到该操作的操作。

    https://msdn.microsoft.com/en-us/library/dd505244(v=vs.118).aspx

    的beginform需要在您指定的动作和控制器参数。提交按钮将自动使用它。

  2. 使用jQuery来执行ajax例程,您可以让您作为ajax url目标,并从jQuery ajax“data”值传递控制器的值。使用这种方法,你需要在你的html元素上有id或class,然后你可以在调用ajax方法之前使用jQuery来获取它。

    http://api.jquery.com/jquery.ajax/

1

您使用的是单变量的作用,但鉴于有你为什么要低于使用地区多数民众赞成名单..

public ActionResult DistrictReport(string[] DISTRICT, string submitButton) 
+0

我试过这个,但仍然没有帮助。我需要改变视图中的任何内容吗? – Waller

相关问题