Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 围绕多个视图传递带有控制器的视图模型_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 围绕多个视图传递带有控制器的视图模型

C# 围绕多个视图传递带有控制器的视图模型,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,所以我有3个视图,一个控制器和一个模型。(只是一个示例)第一个视图设置用户名和姓氏。它被发回控制器,我可以在视图模型中看到数据。然后控制器调用第二个视图设置电子邮件(我可以从视图1调用数据)。第三个视图显示所有数据(视图1中的原始内容不再存在) 您认为在控制器中创建静态单例模型是否可行?还是应该使用TempData 编辑:对不起,我忘了我的控制器 控制器中的GET方法是否需要参数 [HttpGet] public virtual ActionResult SignUp1(model

所以我有3个视图,一个控制器和一个模型。(只是一个示例)第一个视图设置用户名和姓氏。它被发回控制器,我可以在视图模型中看到数据。然后控制器调用第二个视图设置电子邮件(我可以从视图1调用数据)。第三个视图显示所有数据(视图1中的原始内容不再存在)

您认为在控制器中创建静态单例模型是否可行?还是应该使用TempData

编辑:对不起,我忘了我的控制器

控制器中的GET方法是否需要参数

   [HttpGet]
    public virtual ActionResult SignUp1(model m)
    {
        return View(m)
    }

静态对于网页来说是个坏主意,因为它本身不是线程安全的()。这意味着,如果有两个或两个以上的人同时使用它,你会有非常奇怪的行为


我不知道你为什么会考虑这样做——你有什么特别的理由考虑这样做吗?正确的方法是将模型从每个视图发布回每个控制器操作,每次填充更多数据。或者,您可以返回到相同的操作,然后根据模型中缺少哪些字段(如果没有字段,则返回显示)返回相应的视图

您可以使用@
Html.Partial(“视图名称”,对象)
调用另一个视图。如果您想执行逻辑,可以使用
@Html.action(“操作”,“控制器”,对象)
调用另一个控制器操作。然后就像其他控制器的动作一样。通常,从视图调用操作时会使用
[ChildActionOnly]

装饰,为什么视图会相互传递模型?你应该在页面加载之间点击控制器…@Bobson在问题中完全忽略了我的控制器。现在就在那里。是的,中间部分!我想在浏览视图时构建模型,但我无法实现这一点,除非我应该有隐藏字段来重新填充之前在视图中填充的内容it@FreshJays-是的,那是最好的办法。替代方法包括将其存储在数据库或
会话中。您不想使用
ViewData
TempData
,因为它们不会在发布后一直存在,IIRC。非常感谢您!当我尝试以这种方式实现时,问题是:View1我设置了Firstname->View2我可以检索并读取Firstname->当我将表单从View2发布到post方法时,在模型中Firstname是空的。它被清除了:)我想会的,让我试试看,希望数据保留下来。数据没有保留,名字和姓氏仍然是空的。。。我认为隐藏字段是我唯一的选择?
   [HttpGet]
    public virtual ActionResult SignUp1(model m)
    {
        return View(m)
    }