0

私はそのようなかみそりのビューを持っています:

@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>
}

基本的に、連絡先のリストがあり、各連絡先の横に削除できるボタンを配置したいと考えています。同じページに、新しい連絡先を追加できるフォームがあります (問題なく動作します)。

しかし、呼び出されるコントローラーでは、文字列引数が null として表示されます。ボタンの値属性 (@ec.ContactGuid) になると思います。

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

1) これを修正する方法はありますか?

2)私が完全に見逃しているより良いパラダイムはありますか?私は新しい MVC 開発者です。

4

1 に答える 1

3

渡されるパラメーター名は名前と一致する必要があるため、名前が Delete であるため:

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

Delete は、値ではなく、パラメーターの名前である必要があります。この場合、次のようにします。

[HttpPost]
public ActionResult RemoveContact(String Delete)

変数 Delete は、@ec.ContactGuidクリック時に の値を持ちます。

于 2015-08-16T01:28:47.470 に答える