2016-04-15 3 views
0

Я хочу отправить объект или, по крайней мере, его идентификатор от контроллера к другому контроллеру, так как я могу это сделать? Как отправить переменную с контроллера на другую в asp.net mvcсвязь между контроллерами asp.net mvc by viewdata

Эта инструкция решает проблему или просто для связи с контроллером-просмотром? это метод в первом контроллере:

[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); 
 
     }

и это мой второй контроллер: я хочу отправить логин пользователя из метода входа в первый контроллер для метода создания в этом контроллер:

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(); 
 
     //} 
 
    } 
 
}

+0

Как вы называете другого контроллера и какие подписи методов контроллера? (и нет, вы не можете использовать 'ViewData') –

+0

« Как вы называете другого контроллера »!!? я не звоню! мне просто нужно отправить int с контроллера на другой (т. е. когда пользователь регистрируется, я отправляю его логин в «ProjectController», чтобы поместить его в качестве ключа foriegn, когда этот пользователь создает новый проект (у меня есть объект, называемый проектом)) – kokomoi

+0

Вы спрашиваете состояния: как отправить переменную от контроллера к другому_ (еще что?) –

ответ

1

Вы не можете использовать ViewData для отправки переменной с контроллера на другой контроллер.

Может выполнять с При успешной аутентификации, вызовите следующий метод

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

Эй, ребята, наконец, моя проблема решена: D !!! Я использовал TempData, он работает как ViewData и ViewBag, но его для связи между контроллерами

Смежные вопросы