@ Html.BeginForm Anzeige von "System.Web.Mvc.Html.MvcForm" auf Seite

97

Ich habe eine Rasiermesseransicht, bei der ich innerhalb einer 'if'-Anweisung eine Schaltfläche zum Löschen hinzugefügt habe. Wenn die Ansicht im Browser gerendert wird, wird neben der Schaltfläche zum Löschen "System.Web.Mvc.Html.MvcForm" angezeigt .

Wie werde ich es los?

Hier ist der 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>

So wird es in der gerenderten Rasiermesseransicht angezeigt:

System.Web.Mvc.Html.MvcForm [ Schaltfläche Löschen]

Stellen Sie sich vor, [Schaltfläche löschen] sei eine tatsächliche Schaltfläche, und Sie hätten keine Lust auf einen Screenshot.

Danke für Ihre Hilfe.

Timothy Green
quelle

Antworten:

147

Die empfohlene Methode zum Generieren eines Formulars lautet wie folgt:

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

Alternativ können Sie dies tun:

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

Der Grund, warum Ihr ursprünglicher Ansatz nicht funktioniert hat, liegt darin, dass BeginForm()direkt in die Ausgabe geschrieben wird.

Marcind
quelle
3
mit @using(Html.BeginForm("deleteupdate", "home"))für mich gearbeitet
Gautam Beri
27

Bitte verwenden Sie @using anstelle des Problems. Das Problem wurde behoben. Ich verwende MVC 4

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

Geben Sie hier die Bildbeschreibung ein

Machen Sie es richtig, wir können sie verwenden

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

Ashok Reddy Medikonda
quelle