2015-08-16 61 views
0

我有一个Razor视图这样:按钮,控制器无法看到按钮值

@using (Html.BeginForm("RemoveContact", "MyContacts")) 
{ 
    <table> 
     @foreach (MyProject.Models.MyContacts.ExistingContact ec in Model.ExistingContacts) 
     { 
     <tr> 
      <td>@ec.FirstName</td> 
      <td>@ec.LastName</td> 
      <td>@ec.Relationship</td> 
      <td>@ec.Phone</td> 
      <td>@ec.Email</td> 
      <td> 
       <button type="submit" name="Delete" id="Delete" value="@ec.ContactGuid">Delete</button> 
      </td> 
     </tr> 
      } 
    </table> 
} 

基本上我有一个联系人列表,我希望把旁边的按钮给每个允许他们删除的人。在同一页面上是一个允许他们添加新联系人的窗体(工作正常)。

但在我的控制器中,被调用的字符串参数显示为空。我期望它是按钮的值属性(@ ec.ContactGuid)。

[HttpPost] 
public ActionResult RemoveContact(String contactGuid) 
{ 
    return Redirect("/MyContacts/"); 
} 

1)有没有办法解决这个问题?

2)有没有更好的范例我完全失踪?我是一名新的MVC开发人员。

+1

您的按钮名称是Delete,而不是contactGuid。 –

+0

@WiktorZychla甚至不知道按钮和方法参数之间的联系,谢谢你,很好。 – radpin

回答

3

传入的参数名称必须匹配的名称,这样以来你的名字删除:

<button type="submit" name="Delete" .. 

删除必须是该参数,而不是值的名称;在这种情况下,请执行以下操作:

[HttpPost] 
public ActionResult RemoveContact(String Delete) 

变量Delete在点击时将具有值@ec.ContactGuid