0

コントローラーには、レコードの追加と編集の機能が同じであるため、基本的に同じビューを使用する作成と編集の2つのアクションがあります。

だから私の見解では、私はこれを持っています:

@using (Html.BeginForm("Create", "Customers", FormMethod.Post, new { @class = "form-horizontal" }))

私はただ使うことができた@using (Html.BeginForm()) { }

しかし、そうすれば、cssクラスファイルに追加するオーバーロードメソッドが表示されません。

ハードコーディングせずに、作成アクションと編集アクションの両方に同じBeginFormヘルパーを使用するにはどうすればよいですか?

または、2つの異なるアクションに使用されるフォームタグにスタイルを設定する場合は、他の方法、またはベストプラクティスを採用する必要があります。

4

3 に答える 3

0

最良の選択は、cssファイルを作成し、それをビューレイアウトに含めることです。

<link href="**.css" rel="stylesheet" type="text/css" />

css内:

form {
        background-color: #fff;
        margin: 0;
        padding: 0;
    }
于 2012-12-12T16:04:45.953 に答える
0

私はあなたと同じことをしましたが、両方のアクションに対して1つのビューがあります。コントローラでは、コンテキストに応じて設定されるActionと呼ばれるViewBagプロパティを渡すだけです。ビューで、@ Html.BeginForm(ViewBag.Action、...)を呼び出すだけです。

于 2012-12-12T06:52:50.983 に答える
0

これは両方に同じビューを再利用するのは良い考えのように思えますが、通常はどちらか一方にのみ適用される新しい機能が要求された結果として、最終的にはそれらを分割する必要があると言えます。編集と作成の両方に専用のビューを用意する練習を始めることをお勧めします。これとDRYを維持することの間の適切な妥協点は、ビューに開始フォームタグ、必要に応じてJavaScriptまたはその他の参照を含めることですが、フィールド自体には@ Html.EditorFor()を使用し、そのデータ型のEditorTemplateを作成します。そうすれば、DRYの原則を可能な限り維持しながら、単一責任の原則に固執することができます。確かに、さらに複雑になった場合は、共有EditorTemplateも変更する必要がある可能性があります。@Html.EditorFor(x=>x, "CustomerEdit")

一般に、ビューの懸念事項(フォームURLの生成)をコントローラーに指示させるのは悪い習慣です。

Views / Customers / Create.cshtml

@using (Html.BeginForm("Create", "Customers", FormMethod.Post, new { @class = "form-horizontal" }))
{
    @Html.EditorFor(x=>x)
}

Views / Customers / Edit.cshtml

@using (Html.BeginForm("Edit", "Customers", FormMethod.Post, new { @class = "form-horizontal" }))
{
    @Html.EditorFor(x=>x)
}

Views / Customers / EditorTemplates / Customer.cshtml

<div class="control-group">
    <label class="control-label">@Html.DisplayNameFor(model => model.Name)</label>
    <div class="controls">
        <span class="text">
            @Html.EditorFor(model => model.Name)
        </span>
    </div>
</div>
<div class="control-group">
    <label class="control-label">@Html.DisplayNameFor(model => model.PhoneNumber)</label>
    <div class="controls">
        <span class="text">
            @Html.EditorFor(model => model.PhoneNumber)
        </span>
    </div>
</div>
...etc
于 2012-12-12T16:37:39.110 に答える