我如何提供asp.net mvc的成功消息?

mah*_*esh 15 c# asp.net-mvc

如何在asp.net mvc中提供成功消息?

fre*_*nky 18

如果您在不同的页面上显示消息而不ViewData会对您有所帮助,因为它会随每个请求重新初始化.另一方面,TempData可以存储两个请求的数据.这是一个例子:

public ActionResult SomeAction(SomeModel someModel)
        {
            if (ModelState.IsValid)
            {
                //do something
                TempData["Success"] = "Success message text.";
                return RedirectToAction("Index");
            }
            else
            {
                ViewData["Error"] = "Error message text.";
                return View(someModel);
            }
        }
Run Code Online (Sandbox Code Playgroud)

if你必须使用内部块,TempData因为你正在进行重定向(另一个请求),但在其他内部你可以使用ViewData.

在内部视图中你可以有这样的东西:

@if (ViewData["Error"] != null)
{
    <div class="red">
        <p><strong>Error:</strong> @ViewData["Error"].ToString()</p>
    </div>
}
@if (TempData["Success"] != null)
{
    <div class="green">
        <p><strong>Success:</strong> @TempData["Success"].ToString()</p>
    </div>
}
Run Code Online (Sandbox Code Playgroud)

  • @Daniel我同意,但问题是关于成功消息而不是验证错误;) (5认同)

小智 12

在你的控制器中,你可以这样做:

ViewData["Message"] = "Success"
Run Code Online (Sandbox Code Playgroud)

在您的视图中,您可以检查是否有要显示的消息,如果有,则显示它:

@if (ViewData["Message"] != null)
    <div>success</div>
Run Code Online (Sandbox Code Playgroud)

  • 实际显示存储的消息而不是完全不同的消息会不会更有意义? (11认同)

sma*_*man 2

使用 ViewData 存储成功消息。在控制器中创建成功消息并在视图中检查它。如果存在,则渲染它。