通过viewdata控制器asp.net mvc之间的通信

时间:2016-04-15 22:37:17

标签: asp.net-mvc-4

我想将一个对象或至少其ID从控制器发送到另一个控制器,那么我该怎么做呢? 如何在asp.net mvc

中将变量从控制器发送到另一个变量

这条指令解决了问题,还是仅仅用于控制器 - 视图通信? 这是第一个控制器中的方法:

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult login(Utilisateur u)
        {
            if (u.login != null && u.Password != null)
            {
                using (BD_GestionDepences db = new BD_GestionDepences())
                {
                    string x;
                    string hash = GetSHA1HashData(u.Password);
                    x = hash;
                    u.Password = x;
                    u.ConfirmPassword = x;
                    Utilisateur utilisateurV = log_existe("admin", u.login, u.Password);
                    if (utilisateurV != null)
                    {
                        return RedirectToAction("admin");
                    }
                    else { ViewBag.ResultMessage = "verifier login et password !"; }
                }
            }
            return View(u);
        }

这是我的第二个控制器:我想将用户登录从第一个控制器中的登录方法发送到此控制器中的create方法:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using mvc_depences.Models;
namespace mvc_depences.Controllers
{
    public class ProjetController : Controller
    {
        private BD_GestionDepences db = new BD_GestionDepences();
        public ActionResult Index()
        {
            return View();
        }
        //public ActionResult beforeCreate()
        //{

        //}
        public ActionResult Create()
        {
            ViewBag.UtilisateurID = new SelectList(db.Utilisateurs, "UtilisateurID");
            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "ProjetId,nomP,DateDebut,DateFinPrevue,DateFinReele,etat,Description,UtilisateurID")]Projet projet)
        {
            if(ModelState.IsValid)
            {
                db.Projets.Add(projet);
                db.SaveChanges();
                return RedirectToAction("Index");
            };
            return View(projet);
        }
        public ActionResult Projet_Read([DataSourceRequest]DataSourceRequest request)
        {
            IQueryable<Projet> projets = db.Projets;
            DataSourceResult result = projets.ToDataSourceResult(request, projet => new
            {
                ProjetId = projet.ProjetId,
                nomP = projet.nomP,
                DateDebut = projet.DateDebut,
                DateFinPrevue = projet.DateFinPrevue,
                DateFinReele = projet.DateFinReele,
                etat = projet.etat,
            });
            return Json(result);
        }
        //public ActionResult Index()
        //{
        //    return View();
        //}
    }
}

2 个答案:

答案 0 :(得分:1)

您不能使用 ViewData 将变量从控制器发送到另一个控制器。

可以使用“成功验证”执行,请调用以下方法

return RedirectToAction("ActionName", "ControllerName", new {variable1 = value1, variable2 = value2/*...etc*/});

答案 1 :(得分:0)

嘿家伙终于我的问题解决了:D !!! 我使用TempData,它像ViewData和ViewBag一样工作,但它用于控制器之间的通信