【问题标题】:What should I return to the view to confirm that a a process has been successful?我应该返回视图以确认流程是否成功?
【发布时间】:2013-02-22 01:40:47
【问题描述】:

假设我有一个注册页面。这是一个简单的视图,只有“名称”和“电子邮件”输入框。当用户提交他们的详细信息时,控制器将在数据库中创建用户,然后返回(相同的)视图。

现在返回的是相同的视图,我希望视图检测到该过程是否成功。 IE。我需要将一些东西传回视图,让它显示一些稍微不同的东西。该页面本质上是相同的,但我有一些文本“成功注册”而不是输入框。

一种方法:

ViewBag.RegistrationWasSuccessful = True

然后在视图中简单地检查该变量是否为真,然后显示“成功”文本。

另一种方法是将其添加到模型中:

Function Registration(ByVal model as RegistrationView) As ActionResult
    If ModelState.IsValid Then
        model.RegistrationWasSuccessful = True
    End If
    Return View(model)
End Function

再次检查该变量是否为真。

检查表单是否成功的最佳方法是什么?上面的方法看起来有点难看。

【问题讨论】:

    标签: asp.net asp.net-mvc vb.net asp.net-mvc-3


    【解决方案1】:

    如果您正在寻找根据流程成功/失败来显示成功或失败消息的最简洁、最简单的方法,我建议改为将消息添加到您的 ViewBag 并在您的视图中发布成功或失败消息。

    在你的控制器中

    if processSuccess == true
       ViewBag.RegistrationMessage = "Success"
    else 
       ViewBag.RegistrationMessage = "Failure"
    

    在您的视图显示中

    <span> @ViewBag.RegistrationMessage </span>
    

    【讨论】:

    • 输入框不显示怎么办?我需要一个If语句,对吗?也许只是 {If ViewBag.Registration = "Success"}?
    • @RowanFreeman,我一定错过了那部分。我专注于避免混乱。您将无法绕过条件语句...您可以将它们放入您的 Viewbag 或 Partial 中。但我不建议走那么远。一些混乱会伴随着灵活性而来。尽管我渴望干净的视图,但它们会变得有点混乱。
    • 谢谢戴夫。是的,我试图避免这种混乱。我讨厌在视图中有条件语句并且显示的东西略有不同。我想我会坚持使用 ViewBag。
    猜你喜欢
    • 2012-09-09
    • 2014-08-31
    • 2015-01-06
    • 2012-03-21
    • 1970-01-01
    • 2011-03-01
    • 2019-11-30
    • 2012-03-20
    • 2016-03-19
    相关资源
    最近更新 更多