@ Html.BeginForm Exibindo “System.Web.Mvc.Html.MvcForm” na página

97

Eu tenho um modo de exibição de navalha em que adicionei um botão excluir dentro de uma instrução 'if' e quando o modo de exibição é renderizado no navegador, ele exibe "System.Web.Mvc.Html.MvcForm" ao lado do botão excluir.

Como faço para me livrar dele?

Aqui está o código:

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

Aqui está como ele aparece na Visualização do Razor renderizada:

System.Web.Mvc.Html.MvcForm [Botão Excluir]

fingir que [botão de exclusão] é um botão real, não estou com vontade de fazer uma captura de tela.

Obrigado pela ajuda.

Timothy Green
fonte

Respostas:

147

A maneira recomendada de gerar um formulário é a seguinte:

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

Alternativamente, você pode fazer isso:

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

O motivo pelo qual sua abordagem original não funcionou é porque BeginForm()grava diretamente na saída.

Marcind
fonte
3
usando @using(Html.BeginForm("deleteupdate", "home"))funcionou para mim
Gautam Beri
27

Use @using em vez de usar o problema será resolvido. Estou usando MVC 4

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

insira a descrição da imagem aqui

Acerte para isso, podemos usá-los

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

Ashok Reddy Medikonda
fonte