@ Html.BeginForm Wyświetlanie „System.Web.Mvc.Html.MvcForm” na stronie

97

Mam widok maszynki do golenia, w którym dodałem przycisk usuwania do wnętrza instrukcji „if”, a gdy widok jest renderowany w przeglądarce, obok przycisku usuwania jest wyświetlany tekst „System.Web.Mvc.Html.MvcForm” .

Jak się go pozbyć?

Oto kod:

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

Oto, jak pojawia się w renderowanym widoku Razor:

System.Web.Mvc.Html.MvcForm [przycisk Usuń]

udawać, że [przycisk usuwania] to rzeczywisty przycisk, nie chciało się robić zrzutu ekranu.

Dziękuję za pomoc.

Timothy Green
źródło

Odpowiedzi:

147

Zalecany sposób generowania formularza jest następujący:

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

Alternatywnie możesz to zrobić:

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

Powodem, dla którego twoje oryginalne podejście nie zadziałało, jest to, że BeginForm()zapisuje bezpośrednio do wyniku.

marcind
źródło
3
używanie @using(Html.BeginForm("deleteupdate", "home"))zadziałało dla mnie
Gautam Beri
27

Proszę używać @using zamiast używać problem zostanie rozwiązany Używam MVC 4

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

wprowadź opis obrazu tutaj

Przygotuj się do tego, możemy ich użyć

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

Ashok Reddy Medikonda
źródło