如何在控制器ASP NET MVC之间传递依赖关系

时间:2018-01-19 16:14:43

标签: c# .net asp.net-mvc

您好我有以下情况:我有2个控制器A和B.我想从A发送给B一个对象..使用B的一些动作然后返回到A. 另一方面,我也想直接访问B.

到目前为止,我的数据流如下:

<svg preserveAspectRatio="none" ... 

问题在于控制器B.因为我可以通过两种方式访问​​它(依赖于A或不依赖)到目前为止,我将传递依赖关系 - &gt; Action-&gt; View-&gt; Action..etc- &gt;回到控制器A,不会失去它,如下图所示:

Controller A ->Action-> View->Actionlink(object,Controller B)

正如你所看到的,我会继续将依赖从动作传递到视图,如果不是null,直到我完全循环(我回到A)。我真的需要做所有这些咕噜咕噜的工作吗?

如果情况变得更复杂,请说:

Controller B
{
Action1(Dependency c?)
{Viewbag.dependency=c??0;...} -> View(....ajax(depedency,Action2)
Action2(Dependency c?)
{} -> View.depedency=c??0...} -> View(ajax(dependency,Action3)
.....
ActionN(Dependency c?)
{
ReturnRedirect("action1",ControllerA)
}

我可以分别访问三个控制器中的任何一个,但是我可以从A到B进行依赖和近圆,或者从B继续到C并关闭圆圈。那会是一个好方法吗?

1 个答案:

答案 0 :(得分:-1)

我正在使用NewtonSoft库传递给另一个控制器:

tempData[key]=JsonConvert.SerializeObject(value);

我使用了以下扩展方法:

public static class TempDataExt
    {
        public static void Put<T>(this ITempDataDictionary tempData,string key,T value)
        {
            tempData[key]=JsonConvert.SerializeObject(value);
        }
        public static T Get<T>(this ITempDataDictionary tempData, string key) where T : class
        {
        object o;
        tempData.TryGetValue(key, out o);
        return o == null ? null : JsonConvert.DeserializeObject<T>((string)o);
        }
    }

获取我正在使用的tempdata对象:

    ViewData["tlocations"]=JsonConvert.SerializeObject(TempData.Get<IEnumerable<long>>("tlocations"));
TempData.Keep();