1

コントローラー「コントラクト」と 3 つの GET メソッドがあります。「すべて」、グリッドを含む「フォーカス」、編集用の「編集」、および 1 つの POST メソッド「編集」です。ユーザーは、ボタンを使用して任意のグリッドから編集にアクセスできます。しかし、POST が実行された後、リクエストを送信するアクションにリダイレクトしたいと考えています。例えば:

  1. 「フォーカス」グリッドを開く
  2. 行を選択
  3. クリックした編集
  4. 変更を加えて、[保存] をクリックします
  5. 最後に「フォーカス」グリッドにリダイレクトします (!)

また

  1. 「すべて」グリッドを開く
  2. 行を選択
  3. クリックした編集
  4. 変更を加えて、[保存] をクリックします
  5. 最後に「すべて」のグリッドにリダイレクトします (!)
4

2 に答える 2

1
public ActionResul All()
{
  var items=dbContext.Items;
  return View("All",items);
}

ビューにAllは、データを含むグリッドがあります。グリッドからレコードを選択して [編集] をクリックすると、[編集] の 2 番目のアクション メソッドに移動します。

ここで edit メソッドを呼び出すときに some フラグを渡すことができます。このように編集リンクを作成するときにそれを追加できます

@Html.ActionLink("Edit","Edit","Item",new { @id=item.Id, @from="all"},null)

fromしたがって、私の Edit には、値 " " を持つクエリ文字列キー " " がありallます。

同じように、のビューでFocus、別の値を渡すことができます

@Html.ActionLink("Edit","Edit","Item",new { @id=item.Id, @from="focus"},null)

編集アクション メソッドでは、パラメーターを読み取り、編集ビュー モデルのプロパティ値として設定します。このプロパティを ViewModel に追加することをお勧めします。

public ActionResult Edit(int id,string from)
{
  EditItemViewModel item=GetItem(id);
  item.From=from;      
  return View(item);
}

このビューには編集フォームがあります。の値をFromフォーム要素内に保持して、フォーム投稿で使用できるようにします。

@model EditItemViewModel 

@using(Html.BeginForm())
{
   @Html.HiddenFor(m => m.Id);
   @Html.TextBoxFor(m => m.ItemName)
   @Html.TextBoxFor(m => m.ItemDesc)
   @Html.HiddenFor(m => m.From)
   <input type="submit" value="Update" />
}

ユーザーが編集して再送信できる場所。これは HttpPost Edit アクション メソッドで処理します。From プロパティの値を確認し、保存後にリダイレクトする場所を決定します

[HttpPost]
public ActionResult Edit(EditItemViewModel model)
{
  if(ModelState.IsValid)
  {
    //Save data 
   if(model.From=="all")
       return RedirectToAction("All");
   else
       return RedirectToAction("Focus");
  }
  return View(model);

}
于 2012-04-27T12:40:02.090 に答える
0

あなたの投稿編集はこのようになると思います

(Edit/All/1 または Edit/Focus/2) を持つグリッド行をクリックすると、これにリダイレクトできます

   public ActionResult Edit(int id, yourviewmodel viewmodel,string YourFilter)
   {

           return RedirectToAction(YourFilter);
   }

そしてglobal.asaxでは、編集送信のためにこのようにルートを設定できます

    routes.MapRoute(
            "filters",
            "All",
            new { controller = "Contracts", action = "All" }
        ); 

       routes.MapRoute(
            "filters1",
            "focus",
            new { controller = "Contracts", action = "focus" }
        ); 

編集用クリック

      routes.MapRoute(
          "EditFilter",
          "Edit/{YourFilter}/{id}",
          new { controller = "Contract", action = "Edit",YourFilter = UrlParameter.Optional,id = UrlParameter.Optional }
      );
于 2012-04-27T12:33:18.273 に答える