获取按钮单击值时出现问题

时间:2012-12-04 18:39:58

标签: asp.net-mvc razor

我有以下观点:

@using SuburbanCustPortal.SuburbanService

<br />
<br />
<table>

      @if (ViewData["CustomerData"] != null)
       {
         foreach (var usr in (IEnumerable<CustomerData>) ViewData["CustomerData"])
         {

           using (Html.BeginForm("ShowCustomer2", "Customer", FormMethod.Post))
           {
             <tr>              
               @Html.HiddenFor(model => @usr.AccountId)

               <td>
                 <input id="btn" type="submit" value="View"/>               
               </td>

               <td>
                 @usr.Branch-@usr.AccountNumber
               </td>

               <td>
                 @usr.Name
               </td>

               <td>
                 @usr.DeliveryStreet
               </td>

             </tr>            

           }
         }
       }

</table>
<br />

我想点击按钮的AccountId。它列出了该登录中的所有帐户。

无论我如何引用它,我都会变为null:

[HttpPost]
public ActionResult ShowCustomer2(FormCollection formCollection)
{

  var corpid = MiscClasses.GetCookieInfo.TokenId;
  var acctid = formCollection.Get("AccountId");
  MiscClasses.GetCookieInfo.CurrentAccountGuid = acctid;

  var sb = new StringBuilder();
  sb.AppendLine("SuburbanCustPortal,Controllers.CustomerController.ExistingAccounts");
  sb.AppendLine(string.Format("corpid: {0}", corpid));
  sb.AppendLine(string.Format("acctid: {0}", acctid));
  Logging.LogInfo(sb.ToString(), _asName);

  var cr = new CustomerRequest();
  cr.CompanyId = corpid;
  cr.Account = acctid;

  return View("AccountScreen", _client.GetCustomerByGuid(cr));
}

有人告诉我我做错了吗?

更新

我在视图中做了以下更改:

@Html.Hidden(@usr.AccountId)

和as:

@Html.Hidden(usr.AccountId)

我添加了这些行只是为了验证控制器代码:

var acctid = formCollection["AccountId"];
acctid = formCollection.Get("AccountId");

两者仍然是空的。

2 个答案:

答案 0 :(得分:2)

您正在使用名为CustomerData的类的属性。它将为隐藏字段CustomerData.AccountId attribute.try生成name,如下所示手动呈现隐藏标记:

<input type="hidden" name="AccountId" value="@usr.AccountId">

答案 1 :(得分:0)

你绑定了错误的隐藏字段名称

尝试:

@Html.Hidden("AccountId")

也可以在服务器的方法帖子中尝试

[HttpPost]
public ActionResult ShowCustomer2(int accountId, FormCollection formCollection)