0

同じ ActionResult を使用する 2 つのビューがあります。もともとビューは 1 つしかありませんでしたが、現在は 2 つ目のビューが必要です。

ビューは - 「インデックス」および「承認済み」インデックスです。

    [HttpGet]
    public ActionResult Index(string status, string message)
    {
        var InboxStatus = InboxStatus.New;

        if (!Enum.TryParse(status, out inboxStatus))
            inboxStatus = InboxStatus.New;

        var model = new InboxModel();
        model.Status = inboxStatus.ToString();

        model.InboxMailCount = GetInboxMailCount();
        model.InboxMailCount.Status = InboxStatus.ToString();

        @ViewBag.Message = message;

        return View(model);
    }

承認

       [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Accept(InboxModel model)
    {
        if (ModelState.IsValid)
        {
            var inboxmail = _repo.GetById(model.ID);

            inboxmail.Status = (int)ReferralStatus.Accepted;
            inboxmail.AcceptedByUserId = UserId;
            inboxmail.AcceptenceDateTime = DateTime.Now;

            _uow.SaveChanges();

            return RedirectToAction("Index", new { Message = "Accepted Successfully" });
        }

        return View(model.ID.ToString());
    }

ActionResult は「Declined」と呼ばれます。問題は、Action Result に次の内容が含まれていることです...

  [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Decline(InboxModel model)
    {
        if (ModelState.IsValid)
        {
            var InBox = _repo.GetById(model.ID);

            InBox.Status = (int)ReferralStatus.Declined;
            InBox.DeclinedByUserId = UserId;
            InBox.DeclinedDateTime = DateTime.Now;

            _uow.SaveChanges();


            return RedirectToAction("Index", new { Message = "Declined Successfully" });
        }

        return Accept(model.ID.ToString());
    }

そのため、ユーザーがいずれかのページで「拒否」アクションを選択すると、「承認済み」ビューでアクションを実行しても、「インデックス」にリダイレクトされます。わかる、?元のページにリダイレクトしたいと思います。

これは、現在、さまざまなアクションのために「承認済み」にリダイレクトしている方法です...

インデックスのリストは「ステータス」プロパティに依存するため... インデックス ビュー..

razor 2ビューを使用したASP.Net MVC 4 .....何かアイデアはありますか?

4

4 に答える 4

0

ViewBag.ReturnUrl一連の操作で最新の ActionName を保存するようなものを使用できます。

例:

public ActionResult ActionA(){
 ViewBag.ReturnUrl = "ActionA";
 return View();
}

public ActionResult ActionB(){
 ViewBag.ReturnUrl = "ActionB";
 return View();
}

public ActionResult Declined(){
 return RedirectToAction(ViewBag.ReturnUrl);
}
于 2013-10-15T13:58:12.113 に答える
0

以前の URL をキャッシュまたは保存してから、そこにリダイレクトすることができます。

    public ActionResult Index()
    {
        var previousPage = System.Web.HttpContext.Current.Request.UrlReferrer;


        //Yourlogic

        RedirectToAction(previousPage);
    }
于 2013-10-15T14:08:26.057 に答える
0

InboxModel にプロパティを追加して、オリジンを示すだけです。次に、フォームにその値を持つ Hidden を配置できます。

ところで、あなたは Status パラメータを渡さずに Index にリダイレクトしています...私は間違っていますか?

于 2013-10-15T14:57:08.393 に答える
0

とった !!申し訳ありませんが、混乱に追加するコードがたくさんあったため、単純な質問ではありませんでした..

基本的にアクション開始時にメールの初期ステータスを保存します。ステータスはアクション内でのみ変化します。Accepted ActionResult の上部に、

 var returnStatus = Mail.Status;

次に、戻り値でその変数を使用します....

  return RedirectToAction("Index", new { Status = (int)returnStatus, Message = "Mail Successfully added to Sent Listing" });
于 2013-10-16T14:33:38.150 に答える