2015-10-20 102 views
1

我在视图中有一个窗体,并通过Submit按钮将一些信息传递给Controller。在控制器中,在一个名为SaveP的ActionResult中,我想验证一些条件并将这些验证的结果返回给视图,以便在按下提交按钮后重新加载页面时显示一些内容。ASP.NET MVC ViewBag或TempData?

的代码是类似的东西:

if (!(editor.ID != null && !string.IsNullOrEmpty(editor.Number) && (!ext.SID.HasValue))) 
       { 
        _db.M.DeleteM(editor.PID); 
        pa.P.MID = null; 
        TempData["m"] = false; 

我想视图中显示,只有这些条件适用一些事情。 此外,这家名为SaveP行动结果重定向到返回RedirectToAction("P", new { id = editor.ID });

我用ViewBag并没有奏效,但后来我发现ViewBag元素不重定向后保存。然后,我尝试了一个TempData,但它在视图中是空的。我应该如何解决这个问题?谢谢!

+1

创建一个模型并添加一个新的属性? – Canvas

+0

您是如何访问您重定向到的GET方法中的'TempData'值的?你需要显示相关的代码。但是如果你想要做的只是传递一个'bool'值,那么就给你的方法添加一个参数并使用'RedirectToAction(“P”,new {id = editor.ID,myBool = false})' –

+0

'TempData'在控制器操作(例如重定向)之间持续存在,您只能访问一次。您重定向到的动作可以将'TempData'的值添加到'ViewBag'中。 – Silvermind

回答

1
RedirectToAction("P", new { id = editor.ID ,check = true}); 

和P动作会像

public ActionResult P(int id,bool check=false) 
{ 
    viewBag.check = check; 
} 

如果你通过检查=真正的你会得到真正的支票P动作 ,如果你不传递任何东西,然后不要把它的价值设定为假。 因此,如果这个方法是从多个位置呼叫,你因此未通过检查的参数则不会引发错误...

0

这就是Model来。 您可以使用控制器中的模型对象将属性值发送到查看。在您查看使用HTML助手将此model属性与您所需的元素绑定。在您的发布操作中创建此模型对象的参数。当模型从视图中回传时,它将被填充属性。