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

97

J'ai une vue rasoir dans 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 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 cela apparaît dans la vue Razor rendue:

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

prétendre que [bouton de suppression] est un bouton réel, je n'ai pas envie de prendre une capture d'écran.

Merci de votre aide.

Timothy Green
la source

Réponses:

147

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 également 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 d'origine n'a pas fonctionné est que l' BeginForm()écrit directement dans la sortie.

Marcind
la source
3
en utilisant @using(Html.BeginForm("deleteupdate", "home"))travaillé pour moi
Gautam Beri
27

Veuillez utiliser @using au lieu d'utiliser 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>
}
ANANTH
la source
2

entrez la description de l'image ici

Soyez juste pour cela, nous pouvons les utiliser

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

Ashok Reddy Medikonda
la source