2011-02-12 9 views
90

Tengo una vista de afeitar que agregué un botón de eliminar al interior de una declaración 'if' y cuando la vista se representa en el navegador que muestra "System.Web.Mvc.Html.MvcForm" junto al botón Eliminar.@ Html.BeginForm Mostrar "System.Web.Mvc.Html.MvcForm" en la página

¿Cómo me deshago de él?

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 rendido Razor Ver:

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

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

Gracias por su ayuda.

Respuesta

131

la forma recomendada para generar una forma 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, usted podría 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 La salida.

+0

Sí, acabo de cuenta de esto unos 5 segundos antes de que usted envió. Gracias por informarme sobre por qué sucedió eso, ya que no sabía. –

+2

gracias - me ahorró horas de trabajo porque también me perdí el uso de –

+2

usando '@using (Html.BeginForm (" deleteupdate "," home "))' trabajado para mí –

22

Utilice @using en lugar de utilizar el tema será resuelto estoy usando MVC 4

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

Se solucionó el problema para mí. Esta respuesta es la más breve. ¡Gracias! –

Cuestiones relacionadas