0

.net mvc の部分ビューを作成する場合、編集アクションと作成アクション用に 1 つ作成する必要がありますか、または両方のアクションに 1 つの部分ビューで十分です。ここでは、ドロップダウン リスト、チェックボックスなどを含むビューを検討しています。

更新 1

今日苦労したことは次のとおりです。

いくつかのメンバーを持つモデルがあり、次のように部分ビューを作成しました。

私が持っているコントローラで:

Public ActionResult trip()
{
  return View();
}

ビュー フォルダー (trip.cshtml) 内:

@model tests.Models.Mission
<div id="contents">

<div class="editor-label">
 @Html.LabelFor(model => model.tripName, "tripName")
</div>
<div class="editor-field">
 @Html.DropDownList("tripName", String.Empty)
 @Html.ValidationMessageFor(model => model.tripName)
</div>
<div class="editor-label">
 @Html.LabelFor(model => model.giftname)
</div>
<div class="editor-field">
 @Html.EditorFor(model => model.giftname)
 @Html.ValidationMessageFor(model => model.giftname)
</div>

編集アクションで:

jQueryloadメソッドを使用してページを読み込んでいますが、Create アクションでは問題なく動作しますが、Edit アクションではデータが読み込まれません。404 エラーが表示される

$("#dynamicForm").load("/things/trip #contents", function(response, status, xhr) {
                    if (status == "error") {
                        var msg = "";
                        $("#dynamicForm").html(msg + xhr.status + " " + xhr.statusText);
                    }
                });

はい、試してみ@Html.RenderPartialましたが動作しますが、この例では jQuery を使用しようとしています。

4

3 に答える 3

1

必要に応じて、単一の部分ビューを使用して、モデルにバインドできます。編集の場合はデータが取り込まれ、作成モードでは空のモデル オブジェクトにバインドされます。

于 2013-04-06T03:56:45.943 に答える
0

ビューは単なるテンプレートです。必要なことを行う限り、あらゆるアクションで使用できます。

より大きな問題は、編集と作成の機能によって異なるテンプレートが必要になるかどうかです。

于 2013-04-06T03:56:54.387 に答える
0

これはモデルによって異なります。ほとんどの場合、作成/編集は同じモデルに基づいているため、1 つの部分ビューを参照できるはずです...これにより、DRY が実現します。

あなたの更新に基づいて 1: $.load() 呼び出しで編集しようとしている Mission オブジェクトを指定している場所がわかりません。少なくとも、次のようなクエリ文字列パラメーターを渡したいと思います。/things/trip?mission=23

それ以外の場合、コントローラー アクションは、ビューにロードして応答で送り返すデータを把握できません。また、404 エラーが発生した場合は、コントローラー アクションへのパスが正しいことを確認してください。

于 2013-04-06T03:56:18.600 に答える