成功消息作为ASP中的一个模型.净MVC
本文关键字:一个 模型 MVC 消息 ASP 成功 | 更新日期: 2023-09-27 18:05:04
我打算在我的MVC web应用程序中重用成功消息作为一个模型,这个模型可以是另一个模型的一部分,以报告数据修改期间的反馈状态。到目前为止,我还不能让它工作。假设我有一个FeedbackMessage对象作为模型,以反映成功消息:
public class FeedbackMessage
{
public string Message { get; private set; }
public FeedbackType Type { get; private set; } // 'info', 'error', 'warning', 'success'
public string Image { get; }
}
和我有一个用户偏好页面,它使用偏好对象作为模型,这个对象有如下的FeedbackMessage
public class Preference
{
public string DisplayName { get; set;}
public string BlogUrl { get; set; }
public FeedbackMessage FeedbackMessage { get; set; }
public bool IsValid { get; set; }
}
,在我的控制器中,我遵循PRG (Post-Redirect-Get)模式进行数据修改。代码简单如下:
public ActionResult Preference()
{
var model = new Preference();
model.DisplayName = Models.Settings.Preference.DisplayName;
...
return this.View(model);
}
[HttpPost]
public Action Preference(Preference model)
{
if (model.IsValid)
{
model.FeedbackMessage = new FeedbackMessage { Type = "success" };
}
else
{
model.FeedbackMessage = new FeedbackMessage { Type = "failure" };
}
...
return this.Preference(); // issue Get
}
我的问题是,我不能得到反馈后做POST,因为在get期间,它再次初始化首选对象。在这一点上,我不愿意像其他stackoverlow线程建议的那样使用TempData,因为它在模型中更显式和更清晰。
有没有人在这方面有经验,告诉我如何解决这个问题,或者给我一个更好的设计?谢谢。
-
使用ajax发布首选项模型,然后使用json返回结果(FeedbackMessage)给客户端,并使用js显示反馈
-
由于跨不同请求的Post-Redirect-Get,通常使用TempData来保存模型并在下一个请求中显示,但我们可以在基本布局视图
中这样做 如果你不想改变上面的代码,你可以添加一个私有方法接受不同的偏好模型,并返回视图操作给客户端。以便重用模型