99 votes

@Html.BeginForm Affichage de "System.Web.Mvc.Html.MvcForm" sur la page

J'ai une vue razor à laquelle j'ai ajouté un bouton de suppression à l'intérieur d'une instruction 'if' et lorsque la vue est rendue dans le navigateur, elle affiche "System.Web.Mvc.Html.MvcForm" à côté du bouton de suppression.

Comment puis-je m'en débarrasser ?

Voici le code :

<div id="deletestatusupdate">
    @if (update.User.UserName.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase))
    {
        @Html.BeginForm("deleteupdate", "home")
        @Html.Hidden("returnUrl", Request.Url.ToString())
        <button name="id" value="@update.StatusUpdateId">Delete</button>
    }
</div>

Voici comment il apparaît dans la vue Razor rendue :

System.Web.Mvc.Html.MvcForm [Bouton Supprimer]

prétendre que le [bouton supprimer] est un vrai bouton, je n'avais pas envie de faire une capture d'écran.

Merci pour votre aide.

149voto

marcind Points 38002

La méthode recommandée pour générer un formulaire est la suivante :

<div id="deletestatusupdate">
    @if (update.User.UserName.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase))
    {
        using(Html.BeginForm("deleteupdate", "home"))
        {
            @Html.Hidden("returnUrl", Request.Url.ToString())
            <button name="id" value="@update.StatusUpdateId">Delete</button>
        }
    }
</div>

Vous pouvez aussi faire ceci :

<div id="deletestatusupdate">
    @if (update.User.UserName.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase))
    {
        Html.BeginForm("deleteupdate", "home");
        @Html.Hidden("returnUrl", Request.Url.ToString())
        <button name="id" value="@update.StatusUpdateId">Delete</button>
        Html.EndForm();
    }
</div>

La raison pour laquelle votre approche originale n'a pas fonctionné est que BeginForm() écrit directement sur la sortie.

3 votes

En utilisant @using(Html.BeginForm("deleteupdate", "home")) a fonctionné pour moi

30voto

ANANTH Points 13

Veuillez utiliser @using au lieu de using. Le problème sera résolu. J'utilise MVC 4.

@using(Html.BeginForm("deleteupdate", "home"))
{
    @Html.Hidden("returnUrl", Request.Url.ToString())
    <button name="id" value="@update.StatusUpdateId">Delete</button>
}

2voto

enter image description here

Obtenez le droit pour cela nous pouvons les utiliser

Using(Html.Beginform("Delete", "Home", new { Id = item.id } ))
{
   @* We right the code. *@
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X