1. ホーム
  2. asp.net-mvc-3

[解決済み] System.Web.Mvc.Html.MvcForm をページに表示する。

2022-12-19 05:45:29

質問

私は razor のビューを持っていて、'if' ステートメントの中に削除ボタンを追加しました。 "System.Web.Mvc.Html.MvcForm"を表示しています。 が削除ボタンの横に表示されます。

どのようにしたら消すことができますか?

以下はそのコードです。

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

レンダリングされたRazor Viewでの表示はこんな感じです。

System.Web.Mvc.Html.MvcForm [削除ボタン]

削除ボタン]は実際のボタンであることにして、スクリーンショットを撮る気にはなれませんでした。

ありがとうございました。

どのように解決するのですか?

推奨されるフォームの生成方法は以下の通りです。

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

あるいは、こうすることもできます。

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

最初のやり方がうまくいかなかった理由は BeginForm() が直接出力に書き込むからです。