c# - 从控制器发送消息以在 asp.net core mvc 中查看的最佳方式
问题描述
我正在使用 asp.net core mvc(最新版本)。
我总是将我的消息(成功或失败消息)从控制器发送到 TempData 查看,如下所示:
TempData["msg"] = "Operation was successful";
并在视图中向用户显示此消息:
@if (TempData["msg"] != null)
{
string msg = (string)TempData["msg"];
<script>
UIkit.notification({ message: '@msg', status: 'primary', pos: 'bottom-center', timeout: 15000 });
</script>
}
我想知道将此类消息从控制器传递到视图的标准(最佳和优化)方式。
TempData 适合这种情况吗?有没有更好的方法?
谢谢。
解决方案
创建一个模型来表示您将在视图中显示的所有数据。
public class NewInvoiceViewData
{
public Invoice Invoice { get; set; }
public string Message { get; set; }
public bool HasMessage => string.IsNullOrEmpty(Message) == false;
}
public async Task<ActionResult> CreateInvoice(NewInvoiceParameters parameters)
{
var invoice = createInvoice.From(parameters);
var message = invoice == null ? "Something gone wrong" : "Success";
var viewData = new NewInvoiceViewData
{
Invoice = invoice,
Message = message
}
return View(viewData);
}
在视图中
@if (@data.HasMessage)
{
<script>
UIkit.notification({ message: '@data.Message', status: 'primary', pos: 'bottom-center', timeout: 15000 });
</script>
}
MVC(模型视图控制器)与应用程序分层无关。模型不需要是业务对象或数据库表。请注意,如果不需要额外的值,它可以是业务对象或数据库数据,但这不是强制性的。
模型是一个对象,视图知道如何在没有额外解决方法的情况下显示,模型可以为视图准备所有需要和可能的数据。
推荐阅读
- tensorflow - tf.decode_csv 参数“标签”的数据类型 float64 不在允许值列表中:int32、int64
- eval - 在 Splunk 中,如何使用解析的时间来确定事件之间的持续时间?
- python - Python 可变与不可变字典内存使用情况
- android - 在 android 浏览器 (WebView) 中打开一个链接
- ios - 按钮和自动布局:两件事......两个问题
- vim - 在 Vim 中使用 vmap 注释和取消注释 css 代码
- python-2.7 - Pyral 无法解析返回的父对象
- mysql - 是一种优化大型mysql查询的方法吗?
- opengl-es-2.0 - Android OpenGLES 剩余() < 大小 < 需要
- vuejs2 - 未调用 Nuxt 自定义模块挂钩