3

ビューがFORMタグの開始タグと終了タグをレンダリングしないという問題があります。以下は私のコントローラーへのコードです

    [HttpGet, Authorize]
    public ActionResult Edit(long id)
    {
        Position position = positionRepository.GetPositionById(id);
        return View(position);
    }

そしてこれは私の見解のコードです(コントロールコードを省略しています)

@using (Html.BeginForm("Edit", "Position", new { area = "Stock", id = Model.PositionId }, FormMethod.Post, null)){}

ページが呼び出されると、適切なデータがレンダリングされますが、HTML側には、変更を保存するために必要となる開始および終了のFORMタグが含まれていません。私が見逃しているかもしれないものについての手がかりはありますか?

ここに画像の説明を入力してください ここに画像の説明を入力してください

4

4 に答える 4

6

同様のスレッドで、別のフォームタグが閉じられていないか、新しいBeginFormが別のフォームタグ内にレンダリングされていることがわかりました。

すばやく確認するために、</form>の上にを追加できますHtml.BeginForm(...)

于 2015-07-29T22:53:04.443 に答える
2

根本的な原因は私のマスターページであることがわかりました。マスターページを追加するときに、MVC3リストからではなく標準のマスターページを選択しました。既存のマスターページを削除し、適切なものを追加して(MVC3リストから)ページを更新し、タグが適切にレンダリングされました。

于 2011-09-29T16:55:06.713 に答える
1

ビュー内に部分ビューがある場合、前のフォームが閉じられるまでフォームIDは生成されません。解決策は、すべての部分ビューにBeginFormを使用することです。部分ビューが1つある場合、これは機能しません。秘訣は、2つの部分ビューを保持することです。これは、フォームを閉じる目的でのみダミーの部分ビューになる場合があります。

于 2018-03-14T07:08:13.567 に答える
0

この問題をさらに詳しく説明すると、Html.BeginForm()は、親レイアウトから@RenderBody()を呼び出した場合にのみ機能することがわかりました。

部分ビューのすべてのコンテンツは、マスターによって定義された@セクションにグループ化されます。このため、@ RenderPage()と@RenderSectionのみを呼び出し、@ RenderBody()は呼び出していませんでした。

@RenderBody()の呼び出しを追加すると、フォームタグが表示されます(すべてのコンテンツがセクション内で定義されており、レンダリングする「本体」コンテンツがない場合でも...)

これが他の誰かに役立つことを願っています...それを理解するのにしばらく時間がかかりました...この投稿は最後の鍵を提供しました。

于 2012-02-24T20:03:57.780 に答える