@ Html.BeginForm Mostrando "System.Web.Mvc.Html.MvcForm" en la página

97

Tengo una vista de afeitar que agregué un botón de eliminación dentro de una declaración 'if' y cuando la vista se representa en el navegador, muestra "System.Web.Mvc.Html.MvcForm" al lado del botón de eliminación.

¿Como me deshago de esto?

Aquí está el 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>

Así es como se muestra en la vista de Razor renderizada:

System.Web.Mvc.Html.MvcForm [Botón Eliminar]

Imagina que [botón de borrar] es un botón real, no tenía ganas de tomar una captura de pantalla.

Gracias por tu ayuda.

Timothy Green
fuente

Respuestas:

147

La forma recomendada de generar un formulario es la siguiente:

<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, puede hacer esto:

<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 razón por la que su enfoque original no funcionó es porque BeginForm()escribe directamente en la salida.

maridar
fuente
3
usar @using(Html.BeginForm("deleteupdate", "home"))funcionó para mí
Gautam Beri
27

Use @using en lugar de usar el problema se resolverá Estoy usando MVC 4

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

ingrese la descripción de la imagen aquí

Hazlo bien para esto, podemos usarlos

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

Ashok Reddy Medikonda
fuente