1

たくさんのラベルとチェックボックスが付いたページがあります。このページでは、プロジェクトの展開後にラベルを簡単にカスタマイズできる必要があります。

だから私はこのスタイルですべてのラベルを作りました:

Html.Encode(ViewData ["lblText"])

また、「ボタンラベルの編集」というページに、管理者だけが表示できるボタンを追加しました。

そのボタンをクリックすると、2列のテーブルを含む別のビューをロードしたいと思います。1つの列には現在のラベルが含まれている必要があり、もう1つの列にはユーザーが新しいラベルを入力するためのテキストボックスが含まれている必要があります。

次に、変更を加えたら、元のページの各ラベルの「lblText」を永続的に変更する必要があります。

return view()とreturn RedirectToAction()の両方を使用して、viewdataとtempdataを「ボタンラベルの編集」ビューに渡そうとしましたが、成功しませんでした。私は何かマイナーなものが欠けていますか、それともこれを行うためのより良い方法がありますか?

4

1 に答える 1

0

私が最初に言うのは、ViewDataを使用しないことです。ラベルを含むモデルをビューに戻します。必要に応じて、複合モデルを作成します。

次に、ラベルを編集するには、同じモデルを使用するビューに移動し、新しいテキストを入力して、結果をxml、db、テキストファイルなどに保存します。

したがって、このようなモデルがあるかもしれません。

public class Labels
{
  public List<string> text{ get; set; }
}

したがって、dbレイヤーでは、どこにいても、オブジェクトにラベルテキストアイテムを入力します。

EDITビューで、次のimhoを実行する必要があります。

<% Html.PartialView("EditLabels", Model); %>

次に、EditLabelsと呼ばれる部分的なビューがあり、次の疑似のようなものになります。

foreach(string item in Model)
{
  <% Html.PartialView("labelEdit", item); %>
}

次に、最後に、単一のアイテムを取得して、labelEditと呼ばれるそれを編集できる部分ビューができます。

私の意見では、これは、ビュー全体を機能のチャンクに分割し、懸念事項をうまく分離するために、MVCでそれを行う正しい方法です。

明らかに、投稿を取得して変更に影響を与えるには、ActionResultが必要です。

于 2010-05-24T23:12:22.833 に答える