0

アイテムのリストを表示するビューがあります。ビューでアクションを使用する予定です (ビューは同じですが、異なるデータが表示されるだけです)。

addit を実行するためにダイアログを使用しています (これは正常に動作します)。全体を通して同じダイアログを使用します。

私のクエリは、以下の例で最もよく示されています...

機器ビュー

アクション結果PC()...
アクション結果 ラップトップ()...

したがって、PCコントローラーの下で編集を押してデータを変更し、データを更新すると元に戻ります...元のアクションに戻りたい

そのため、PC を編集すると更新時にダイアログが PC に戻り、ラップトップを編集するとラップトップに戻ります。

どのコントローラーが私を参照しているかを示すために、別の変数を additview に渡す必要があると考えていました。

上記は理にかなっていますか、誰もこれを達成するための最良の方法を提供できますか?

編集:現在のコードを追加する

現時点ではどうすればよいかわかりません。ユーザーの下にモードを設定し、addedit get でモードを取得すると思いましたが、モードを add edit get に送信する方法がわかりません

以下のどこかでできますか?

@Html.ActionLink("Edit", "AddEditRecord", new { id = item.ID }, new { @class = "editDialog" })

#####コントローラ

// GET: /ユーザー

public ActionResult Users()
{

    ViewBag.Title = "User Equipment";
    ViewBag.Mode = "Users";
    string[] arrItems = new string[] { "Laptop", "Workstation", "Mobile","Monitor","Other Peripheral","Home Printer","Home Router","Removable Device" };

    var tblequipments = from d in db.tblEquipments.Include(t => t.User).Include(t => t.ChangeLog).AsEnumerable()
                        where (arrItems.Contains(d.AssetType)) &&  
                                (d.Deleted != 1 || d.Deleted == null) && 
                                (d.Stock != 1 || d.Stock == null) && 
                                (d.DecommissionDate == Convert.ToDateTime("1900-01-01") || d.DecommissionDate == Convert.ToDateTime("0001-01-01") || d.DecommissionDate == null) 
                        select d;
    return View("Equipment",tblequipments.ToList());
}

//GET: /AddEdit
        [HttpGet]
        public ActionResult AddEditRecord(int? id,string mode)
        {
            ViewBag.Mode = mode;
            if (Request.IsAjaxRequest())
            {
                if (id != null)
                {
                    ViewBag.IsUpdate = true;
                    tblEquipment Equipment = db.tblEquipments.Where(m => m.ID == id).FirstOrDefault();
                    return PartialView("_AddEdit", Equipment);
                }

                ViewBag.IsUpdate = false;
                return PartialView("_AddEdit");
            }
            else
            {
                if (id != null)
                {
                    ViewBag.IsUpdate = true;
                    tblEquipment Equipment = db.tblEquipments.Where(m => m.ID == id).FirstOrDefault();
                    return PartialView("AddEdit", Equipment);
                }
                ViewBag.IsUpdate = false;
                return PartialView("AddEdit");
            }
        }
        [HttpPost]
        public ActionResult AddEditRecord(tblEquipment Equipment, string cmd)
        {
            if (ModelState.IsValid)
            {
                switch (cmd)
                {
                    case "Add":
                        try
                        {
                            db.tblEquipments.Add(Equipment);
                            db.SaveChanges();
                            return RedirectToAction("Index");
                        }
                        catch { }
                        break;
                    case "Update":
                        try
                        {
                            tblEquipment Item = db.tblEquipments.Where(m => m.ID == Equipment.ID).FirstOrDefault();
                            if (Item != null)
                            {
                                Item.AssetNo = Equipment.AssetNo;
                                Item.MachineName = Equipment.MachineName;
                                db.SaveChanges();
                            }
                            return RedirectToAction("Index");
                        }
                        catch { }
                        break;
                }
            }

            if (Request.IsAjaxRequest())
            {
                return PartialView("_AddEdit", Equipment);
            }
            else
            {
                return View("AddEdit", Equipment);
            }
        }

ADD モーダル ビューの編集

@using (Ajax.BeginForm("AddEditRecord", "Equipment", new AjaxOptions { HttpMethod = "POST",OnSuccess = "onSuccess()", LoadingElementId = "dvLoading" }))
{    
    @Html.ValidationSummary(true)
<div id="equipmentDialog">    

    <fieldset>
        <legend>Product</legend>
        @if (ViewBag.IsUpdate == true)
        {
             @Html.HiddenFor(model => model.ID)
        }
        <div class="editor-label">
            @Html.LabelFor(model => model.MachineName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.MachineName)
            @Html.ValidationMessageFor(model => model.MachineName)
4

1 に答える 1

0

ソート!

1.ビューバッグ アクションを追加しました 2.そのビューバッグをクエリ文字列で使用して編集しました 3.クエリ文字列を隠しフィールドに入れました 4.フォーム ポストでフィールド値を取得し、フィールド値のアクションにリダイレクトしました

助けてくれてありがとう

于 2013-07-23T09:20:38.360 に答える